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

Javascript 单击POI时在谷歌地图上获取placeId,javascript,google-maps,google-maps-api-3,google-maps-markers,Javascript,Google Maps,Google Maps Api 3,Google Maps Markers,我在我的网站上使用谷歌地图JSV3API。当用户搜索一个地方时,我可以使用getDetailsByPlaceID。当用户单击POI时,我也希望这样做。然而,当用户单击POI而不是使用搜索框时,我似乎找不到一种方法来获取这个placeId 我已经做了好几天的研究,没有找到任何接近的结果 我遇到了这个功能请求,我想知道是否真的没有办法通过POI单击来获取placeId: 感谢您的帮助,谢谢 谷歌没有提供任何记录在案的API方法来通过点击POI获取地点id。然而,我能够使用反向地理编码获得地点id 首

我在我的网站上使用谷歌地图JSV3API。当用户搜索一个地方时,我可以使用getDetailsByPlaceID。当用户单击POI时,我也希望这样做。然而,当用户单击POI而不是使用搜索框时,我似乎找不到一种方法来获取这个placeId

我已经做了好几天的研究,没有找到任何接近的结果

我遇到了这个功能请求,我想知道是否真的没有办法通过POI单击来获取placeId:


感谢您的帮助,谢谢

谷歌没有提供任何记录在案的API方法来通过点击POI获取地点id。然而,我能够使用反向地理编码获得地点id

首先,我们可以通过本文描述的方法获得POI的坐标

其次,您可以使用coordinationfromGetPosition()方法调用geocode方法来检索地址组件和放置id

这是一张工作票

函数初始化(){
变量映射选项={
缩放:14,
中心:新google.maps.LatLng(38.8862447,-77.02158380000003),
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById('map_canvas'),
地图选项);
geocoder=新的google.maps.geocoder;
//保留对原始设置位置功能的参考
var fx=google.maps.InfoWindow.prototype.setPosition;
//重写内置的setPosition方法
google.maps.InfoWindow.prototype.setPosition=function(){
//此属性没有文档记录,但看起来
//它只为POI上打开的信息窗口定义
if(this.logaInternal){
google.maps.event.addListenerOnce(这是'map_changed',函数(){
var map=this.getMap();
//信息窗口将打开,通常在点击POI后打开
如果(地图){
//触发点击
google.maps.event.trigger(映射,'click'{
latLng:this.getPosition()
});
}
});
}
//调用原始的setPosition方法
fx.应用(此,参数);
};
google.maps.event.addListener(映射,'click',函数(e){
//警报('clicked@'+e.latLng.toString())
地理编码({
“位置”:e.latLng
},功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
如果(结果[0]){
警报(“地点id:”+结果[0]。地点id);
}否则{
console.log(“未找到结果”);
}
}否则{
console.log('Geocoder因:'+状态而失败);
}
});
});
}
google.maps.event.addDomListener(窗口“加载”,初始化)
html,
身体
#地图画布{
保证金:0;
身高:100%;
}

自2017-2012年起,现在支持此功能。下面是一个例子

是的。更多详情请参见米哈伊尔·希什科夫的文章。