gpt4 book ai didi

javascript - 单击 POI 时在谷歌地图上获取 placeId

转载 作者:行者123 更新时间:2023-11-29 10:10:44 26 4
gpt4 key购买 nike

我在我的网站上使用 Google Maps JS V3 API。当用户搜索地点时,我可以通过 placeId 使用 getDetails。当用户点击 POI 时,我想做同样的事情。但是,当用户单击 POI 而不是使用搜索框时,我似乎找不到获取此 placeId 的方法。

我已经研究了好几天,但没有找到任何接近的东西。

我遇到了这个功能请求,我想知道是否真的没有办法通过POI点击获取placeId:https://code.google.com/p/gmaps-api-issues/issues/detail?id=8113&q=poi&colspec=ID%20Type%20Status%20Introduced%20Fixed%20Summary%20Stars%20ApiType%20Internal

感谢任何帮助,谢谢!

最佳答案

Google 未提供任何记录的 API 方法来通过单击 POI 获取地点 ID。但是,我能够使用反向地理编码获取地点 ID。

首先,我们可以通过这个Stack-overflow answer中描述的方法获取POI的坐标。

其次,您可以使用 getPosition() 方法中的坐标调用地理编码方法来检索地址组件和地点 ID。

这是一个有效的 JS Fiddle

function initialize() {
var mapOptions = {
zoom: 14,
center: new google.maps.LatLng(38.8862447, -77.02158380000003),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);

geocoder = new google.maps.Geocoder;

//keep a reference to the original setPosition-function
var fx = google.maps.InfoWindow.prototype.setPosition;

//override the built-in setPosition-method
google.maps.InfoWindow.prototype.setPosition = function() {

//this property isn't documented, but as it seems
//it's only defined for InfoWindows opened on POI's
if (this.logAsInternal) {
google.maps.event.addListenerOnce(this, 'map_changed', function() {
var map = this.getMap();

//the infoWindow will be opened, usually after a click on a POI
if (map) {

//trigger the click
google.maps.event.trigger(map, 'click', {
latLng: this.getPosition()
});
}
});
}
//call the original setPosition-method
fx.apply(this, arguments);
};

google.maps.event.addListener(map, 'click', function(e) {
//alert('clicked @' + e.latLng.toString())
geocoder.geocode({
'location': e.latLng
}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
if (results[0]) {

alert('place id: ' + results[0].place_id);


} else {
console.log('No results found');
}
} else {
console.log('Geocoder failed due to: ' + status);
}
});

});
}

google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#map_canvas {
margin: 0;
height: 100%;
}
<div id="map_canvas"></div>
<script src="https://maps.googleapis.com/maps/api/js?callback=initialize" async defer></script>

关于javascript - 单击 POI 时在谷歌地图上获取 placeId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34084208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com