2017-04-10 13 views
0

渡されたURLから経度と緯度をマーカーに入力する方法はありますか?したがって、本質的にユーザーは、Googleマップから「共有」URLをコピー&ペーストします。Googleマップで渡されたGoogleマップURLの場所を検出する方法

E.G.場所:https://www.google.co.nz/maps/place/The+White+House/@38.8976763,-77.0387238,17z/data=!3m1!4b1!4m5!3m4!1s0x89b7b7bcdecbb1df:0x715969d86d0b76bf!8m2!3d38.8976763!4d-77.0365298?hl=en

または直接場所:その共有URLの場所にマーカーを作成 https://www.google.co.nz/maps/place/38%C2%B054'53.8%22N+77%C2%B006'01.6%22W/@38.914936,-77.102638,17z/data=!3m1!4b1!4m5!3m4!1s0x0:0x0!8m2!3d38.914936!4d-77.100444?hl=en

私は、初期化コードをしたいと思います。

これまでのところ私はGeoCode APIの使用を見てきましたが、上記の例のURLを解析してJSでデータを抽出する方法がわかりません。 APIへのAjax呼び出しの例や、これが行われているようなことは感謝します。

答えて

0

URLには緯度と経度が含まれているため、簡単に抽出できます。 putMarkerAtURLCoordinates(SHARED_URL)を呼び出すと、Googleマップインスタンスが「マップ」と呼ばれると仮定して、URLの座標にマーカーが配置されます。

function putMarkerAtURLCoordinates(url){ 
    //get the latlng object from url 
    var myLatLng = getLatLngFromURL(url) 
    //create the marker and assign it to the map 
    var marker = new google.maps.Marker({ 
      position: myLatLng, 
      map: map, 
      title: 'Marker title here' 
    }); 
} 

function getLatLngFromURL(url){ 
    //decode url incase its urlencoded 
    url = decodeURIComponent(url) 
    //find index of @ character 
    var atindex = url.indexOf("@") 
    //cut off the part before the @ and split the rest up by the comma separator 
    var urlparts = url.slice(atindex+1).split(",") 
    //parse the values as floats 
    var lat = parseFloat(urlparts[0]) 
    var lng = parseFloat(urlparts[1]) 
    //return as object 
    return {lat:lat,lng:lng} 
} 

これは安定した解決策ではありません... GoogleがURLスキームを変更した場合、これはもう動作しません。

関連する問題