2015-10-15 216 views
2

我可以通過使用This Link獲得地點Id。但問題是這是基於位置搜索。我想使用draggeble標記來獲取place_id,所以我不能使用上面的鏈接。我正在Google地圖上移動標記,所以我如何在地圖上獲取place_id。如何從谷歌地圖獲取經度和緯度的place_id?

通過marker.getPosition()我們可以得到緯度和經度。所以我想通過緯度和經度知道place_id。我怎樣才能得到,請告訴我

latitude=marker.getPosition().lat();    
longitude=marker.getPosition().lng(); 

回答

11

使用google.maps.GeocoderReverse Geocoding如下解釋:https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse

您將收到包含results[1].place_id數據。

var geocoder = new google.maps.Geocoder; 

latitude=marker.getPosition().lat();    
longitude=marker.getPosition().lng(); 
var latlng = {lat: parseFloat(latitude), lng: parseFloat(longitude)}; 

geocoder.geocode({'location': latlng}, function(results, status) { 
    if (status === google.maps.GeocoderStatus.OK) { 
     if (results[1]) { 
     console.log(results[1].place_id); 
     } else { 
     window.alert('No results found'); 
     } 
    } else { 
     window.alert('Geocoder failed due to: ' + status); 
    } 
    }); 
2

我有新的方法來解決這個問題。在這裏,我使用谷歌http服務來獲取基於經度和緯度的位置的全部信息。你只需要傳遞url和你的API密鑰的緯度和經度(例如:latlng = 21.1497409,79.08747970000002 & key =你的API密鑰)。這裏是ExampleService類我得到服務

getService(url) { 

    return this.http.get(url).map((data: any) => data.json()) 

} 

這一點,你可以把任何你想要的,只是撥打以下服務從那裏你需要的位置數據

this._exampleService.getService("https://maps.googleapis.com/maps/api/geocode/json?latlng=21.1497409, 79.08747970000002&key=YOUR API KEY").subscribe(getplaceData => { 
      var placeDataDest: any; 
      placeDataDest = getplaceData; 
      console.log("i got place id yeee " + placeDataDest['results'][0]['place_id']); 
      console.log("i got place details yeee " + placeDataDest['results']); 
     }); 

希望你會發現這很有

1
組件

您可以使用Geocoder API發送請求,或者直接將HTTP請求發送到後面的Web服務。

你的示例請求:

https://maps.googleapis.com/maps/api/geocode/json?latlng=LATLNG &鍵= YOUR_API_KEY

然後可以很容易地通過解析的Javascript JSON.parse JSON對象()。

相關問題