2015-06-16 109 views
11

他使用谷歌地圖API搜索我能找到一個特定的地方,然後存儲它的細節。但是,該數組不包含可在Google地圖上打開此地點的Google地圖鏈接。從place_id獲取谷歌地圖鏈接

通過API我收到place_id,根據我的感覺,它應該足以構建完整的Google地圖鏈接;但是,我無法找到一種方法來做到這一點。任何人都可以告訴我如何做到這一點。

謝謝你的時間。

+0

我在我正在構建的Android應用程序中遇到同樣的問題。如果下面的答案是正確的,那麼必須使用返回的place_id創建另一個URL請求才能獲得正確的CID似乎很荒謬 –

回答

3

https://www.google.com/maps/place沒有關於預期參數的文檔,所以這可能只是一種解決方法(至少目前對我而言)。

以下URL格式似乎給在大多數情況下,所期望的結果:

https://www.google.com/maps/place/[place-name]/@[latitude],[longitude],[zoom]z/ 

您可以創建基於地名和地方几何此URL

function initialize() { 
 
    var ac = new google.maps.places.Autocomplete(document.getElementById('pac')); 
 
    google.maps.event.addListener(ac, 'place_changed', function() { 
 
    var place = this.getPlace(), 
 
     link = document.getElementById('link'); 
 
    if (!place.geometry) { 
 
     link.textContent = ''; 
 
    } else { 
 
     var zoom = 17, 
 
     url = 'https://www.google.com/maps/place/' + 
 
     encodeURIComponent(place.name) + '/@' + 
 
     place.geometry.location.toUrlValue() + ',' + 
 
     zoom + 'z/'; 
 
     link.href = link.textContent = url; 
 

 
    } 
 

 
    }); 
 
} 
 
google.maps.event.addDomListener(window, 'load', initialize);
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&libraries=places"> 
 
</script> 
 
<input id="pac" /> 
 
<br/> 
 
<a id="link" href="" target="_blank"></a>

5

有一種方法可以始終獲取正確的URL,但它確實需要額外的請求。

您可以使用place_id與 https://maps.googleapis.com/maps/api/place/details/json?key=YOURAPIKEY&placeid=THEPLACEID

從響應得到地點的詳細信息有一個[「結果」] [「網址」]字段總是打開了正確的地方。 例如。 https://maps.google.com/?cid=10254754059248426663

+0

我得到了無效請求 – VitalyB

+0

您需要使用ServerAPIKey。在這個答案掠奪:http://stackoverflow.com/a/24235630/4457396 – oyalhi

20

試試上面的語法。我希望它有幫助

​​
+1

簡單,沒有額外的請求到服務器。 –