我在使用gmaps.js找出如何触发指定的infoWindow时遇到了一些困难
我的地图初始化如下:
map = new GMaps({
div: '#map-canvas'
});
renderMarkers();
我的renderMarkers函数基本上执行对PHP脚本的AJAX调用,该脚本查询数据库并返回结果集,并返回一系列addMarker调用,如下所示:
LOOP THROUGH RESULT SET {
map.addMarker({
lat: marker.SiteLatitude,
lng: marker.SiteLongitude,
infoWindow: {
content: marker.contentHTML,
closeclick: function(e) {
$("#customer-details-container").hide();
}
},
icon: marker.iconPath,
id: marker.MyID
})
}
我刷新/重新渲染标记,因为客户端使用map.removeMarkers()触发对底层数据库的更新,然后触发我的renderMarkers()函数。当标记在地图上重绘时,如果用户打开了infoWindow,我想触发它打开。
我不确定如何根据特定ID触发infoWindow。举个例子,让我们说一个标记设置如下:
map.addMarker({
lat: 102.325
lng: -67.524,
infoWindow: {
content: "<div>test!</div>"
closeclick: function(e) {
$("#customer-details-container").hide();
}
},
icon: "image/marker.png",
id: 1234
})
我是否正确地说我应该能够使用ID = 1234来定位它?例如:
google.maps.event.trigger(markers[1234], 'click');
...
我不确定使用gmaps.js执行此操作的具体语法
任何帮助都非常感谢:D
答案 0 :(得分:4)
添加到Gmaps.map intance的每个标记都有自己的InfoWindow存储在markers对象中。我们需要该特定标记的Array索引键。通过索引键的地址可以打开正确的InfoWinow。您可以通过执行以下操作打开GMaps.js特定标记:
(map.markers[index].infoWindow).open(map.map,map.markers[index]);
将[index]替换为您希望InfoWindow打开的标记的索引。
答案 1 :(得分:2)
我是否正确地说我应该能够使用该ID = 1234来定位它?
我不这么认为。文档非常不完整,在gmaps.js中我找不到任何具有通过属性访问标记的功能。
但你可以扩展原型:
GMaps.prototype.markerById=function(id){
for(var m=0;m<this.markers.length;++m){
if(this.markers[m].get('id')===id){
return this.markers[m];
}
}
return new google.maps.Marker();
}
用法:
google.maps.event.trigger(map.markerById(12345), 'click');