[英]Google Maps API Marker
我正在尝试添加从数据库中获取位置(纬度和经度)的标记的数量,我可以将其添加到地图中,但是
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
方法是将事件侦听器仅添加到最后一个标记(数据库中的最后一个城市)。
如何分别为每个标记添加Listner?
这是我的完整代码..
================================================== ==========================
result contains List<City>
function OnSuccess(result) {
if (result) {
for (var i = 0; i < result.length; i++) {
alert(result[i].lat);
var myCenter= new google.maps.LatLng(result[i].lat,result[i].log);
var marker=new google.maps.Marker({
position:myCenter});
var infowindow = new google.maps.InfoWindow({
content: result[i].desc
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,marker);
});
marker.setMap(map);
}
}
}
您需要关闭。 您正在做的是为每个标记重新定义点击处理程序功能。 单击所有标记后,将执行以下行:
infowindow.open(map,marker);
使用当时“ infowindow”,“ map”和“ marker”的任何值。 而且由于标记是在循环中创建的,因此它将始终引用最后一个标记。
每次也会重新定义infowindow
。 因此,内容将始终是最后结果的内容。
这是我通常的做法。
// create this outside of your loop
var infowindow = new google.maps.InfoWindow({
content: ""
});
for (var i = 0; i < result.length; i++) {
var myCenter= new google.maps.LatLng(result[i].lat,result[i].log);
var marker=new google.maps.Marker({
position: myCenter,
map: map
});
bindInfoWindow(marker, map, infowindow, result[i].desc);
}
function bindInfoWindow(marker, map, infowindow, html) {
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(html);
infowindow.open(map, marker);
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.