2017-04-19 15 views
-1

google.maps.Polygonの「パス」機能を使用して7つのポリゴンを持つGoogle Maps APIスクリプトを作成しました。例えばGoogle Maps API、containslocation()あなたの住所はどのポリゴンですか?

は:

var gigaMap = new google.maps.Polygon({ 
    paths: "britt,shallow,cherokee,clover,freyer,sandy,wyandot", 
    strokeColor: "#990000", 
    strokeOpacity: 0.9, 
    strokeWeight: 2, 
    fillColor: "#990000", 
    fillOpacity: 0.2 
}); 

// apply the polygon 
gigaMap.setMap(map); 

これは、あなたがアドレスを提出し、あなたが

はそれはそれは教えてくれない返すとき以外は完璧な作品私の多角形の一つであるかどうかを確認するためにジオコーダーcontainslocationを行うことができますポリゴンパスでアドレスを見つけた私。

検索する可能性がありますが、これを行う方法を示すコードの例は見つかりません。私はパス名を返すいくつかの見た目のタグがなければならないと仮定しますが、再び運がありません。それが今日の作品としてここ

はコードです:

// receive address, geocode and point map to location 
function geocodeAddress(geocoder, resultsMap) { 

geocoder.geocode({"address": formaddress}, function(results, status) { 
    if (status === "OK") { //this verifies that Google was able to convert the address 
     if (results[0].geometry.location_type == "ROOFTOP"){ //this verifies that Google found an actual address 

      // Is our address within a polygon defined? (true/false) 
      myresult = google.maps.geometry.poly.containsLocation(results[0].geometry.location, gigaMap); 
      updateHTML(myresult,formphase,formlocation); 

      // centers map on address location 
      resultsMap.setCenter(results[0].geometry.location); 

      // zoom result map in to marker and swap terrain 
      resultsMap.setZoom(17); 
      resultsMap.setMapTypeId("satellite"); 

      // place the marker on map 
      var marker = new google.maps.Marker({ 
       map: resultsMap, 
       title: results[0].formatted_address, 
       position: results[0].geometry.location 
      }); 
     } else { 
     document.getElementById("address_result").innerHTML = "<span class='title'>Hum... we are unable to locate the address you entered.</span><br>If you feel your address should have matched a valid Google location, we encourage you to <a href='/#contact'>contact us</a> or <a href='/#service'>search again</a>."; 
      } 
     } else { 
      document.getElementById("address_result").innerHTML = "<span class='title'>Oops!, we are unable to access the Google Geocoder service at this time.</span>"; 
     } 
    }); 
} 

function updateHTML(status,phase,location){ 
    if (status === true && phase == "signup"){ 
     document.getElementById("address_result").innerHTML = "<span class='title'>Congratulations, your address is located within a Service Area!</span>"; 
    }else if (status === true && phase == "survey"){ 
     document.getElementById("address_result").innerHTML = "<span class='title'>Congratulations, your address is located within a prospective Service Area!</span>"; 
    }else if(status === false){ 
     document.getElementById("address_result").innerHTML = "<span class='title'>Hum... at this time your address is not located within a Service Area!</span>"; 
    }else{ 
     document.getElementById("address_result").innerHTML = "<span class='title'>Oops!, we are unable to access the Google Polygon service at this time.</span>"; 
    } 
} 

私は基本的にチェックして、私のupdateHTML(を持つユーザーにHTML結果を返します)。関数。他にもいくつかの変数がありますが、これはクエリのjistです。

同じアクションを実行する方法はありますが、どのポリゴンパスがあるかはわかりますか?

+0

問題を示す[mcve]を入力してください。 – geocodezip

答えて

0

実際には、1つのポリゴンと複数のパスしかありません。

問題を解決する最も簡単な方法は、パスごとに別々のポリゴンを作成することです。その後、それぞれのポリゴンでcontainsLocationを呼び出します。真を返すポリゴンはアドレスを含むポリゴンです。

+0

ありがとうございました、私には(あなたが言及したように)私は唯一の技術が7つのパスを持つ単一のポリを持っていたことはありませんでした。私は、「経路」が単なる地図上に7つのポリゴンを描画するように指示したので、私はそれに近づいていたと思います。 –

関連する問題