我以前看过关于从Google Place ID转换为地址的帖子;然而,我对相反的情况感兴趣。
我有所需位置的GMS地址,但我想获得Google Place ID,以便向用户提供更多详细信息。根据我在谷歌iOS API网站上看到的内容,您可以通过自动完成功能(用于用户搜索)、选定位置功能或当前位置功能获得Google Place ID。
我的应用程序打算显示我已经有地址的多个位置。除了在到达时接收详细信息之外,用户还可以选择单独的位置以获得更多详细信息。因此,上面列出的功能并不理想。
我也尝试过使用谷歌的网络API的功能,如"文本搜索请求"&"附近搜索请求",但我收到"零结果"。
还有其他我没有想到和/或看到的方法吗?
Google Maps JavaScript API中的Place ID查找器怎么样。
地点ID是唯一标识一个地点的文本标识符。它也适用于大多数地点,包括商业、地标、公园和十字路口。这些ID是稳定的,这意味着一旦您确定了某个地点的地点ID,您就可以在下次查找该地点时重用该值。
您可以在Google Places API和许多Google Maps API中使用相同的地点ID。例如,您可以使用相同的地点ID引用地点API、谷歌地图JavaScript API和Google地图地理编码API中的地点、Google地图嵌入API以及GoogleMaps道路API。
以下是用于此操作的示例代码。
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -33.8688, lng: 151.2195},
zoom: 13
});
var input = document.getElementById('pac-input');
var autocomplete = new google.maps.places.Autocomplete(input);
autocomplete.bindTo('bounds', map);
map.controls[google.maps.ControlPosition.TOP_LEFT].push(input);
var infowindow = new google.maps.InfoWindow();
var marker = new google.maps.Marker({
map: map
});
marker.addListener('click', function() {
infowindow.open(map, marker);
});
autocomplete.addListener('place_changed', function() {
infowindow.close();
var place = autocomplete.getPlace();
if (!place.geometry) {
return;
}
if (place.geometry.viewport) {
map.fitBounds(place.geometry.viewport);
} else {
map.setCenter(place.geometry.location);
map.setZoom(17);
}
// Set the position of the marker using the place ID and location.
marker.setPlace({
placeId: place.place_id,
location: place.geometry.location
});
marker.setVisible(true);
infowindow.setContent('<div><strong>' + place.name + '</strong><br>' +
'Place ID: ' + place.place_id + '<br>' +
place.formatted_address);
infowindow.open(map, marker);
});
}
请注意,此示例需要Places库。包括首次加载API时,libraries=place参数。对于示例:
script src="https://maps.googleapis.com/maps/api/jskey=YOUR_API_KEY&libraries=places"