我已经设法更新了地图,根据哪些地方(从我的数据库)包括在当前的地图。然而,我也有一些问题需要用同样的方式来更新俱乐部成员。我尝试在markerClusterer.clearMarkers(Null)之后添加gmarkersi.setMap();但是它不起作用(甚至标记也不再更新)。
下面是代码:
var map;
var gmarkers = [];
function initialize() {
var latlng = new google.maps.LatLng(46.7, 2.5);
var myOptions = {
zoom: 6,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map'), myOptions);
/* Ici, on ajoute l'écouteur d'événement suite à un glisser / déposer */
google.maps.event.addListener(map, 'idle', function() {
var bds = map.getBounds();
var South_Lat = bds.getSouthWest().lat();
var South_Lng = bds.getSouthWest().lng();
var North_Lat = bds.getNorthEast().lat();
var North_Lng = bds.getNorthEast().lng();
var Zoom_Level = map.getZoom(); // hide and delete the existing markers
for (var i=0; i<gmarkers.length; i++) {
gmarkers[i].setMap(null);
}
gmarkers = [];
downloadUrl("./includes/AjaxMarkers.php?maxlat="+North_Lat+"&minlat="+South_Lat+"&minlong="+South_Lng+"&maxlong="+North_Lng+"&zoom="+Zoom_Level, function(data) {
var xml = xmlParse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
createMarker(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")), markers[i].getAttribute('titre'));
}
var markerClusterer = new MarkerClusterer(map, gmarkers);
});
markerClusterer.resetViewport()
});
}
function createMarker(lat, lng, titre) {
var latlng = new google.maps.LatLng(lat, lng);
var marker = new google.maps.Marker({
position: latlng,
map: map,
title: titre }); // keep a reference to created markers so you can remove them
gmarkers.push(marker);
}谢谢你!
发布于 2013-12-21 19:22:23
您的markerClusterer是在对downloadUrl的回调中定义的,在该范围之外是不可访问的。
最简单的解决方法是在全局上下文中定义它。
var map;
var gmarkers = [];
var markerClusterer = null;
function initialize() {然后在downloadUrl回调中:
downloadUrl("./includes/AjaxMarkers.php?maxlat="+North_Lat+"&minlat="+South_Lat+"&minlong="+South_Lng+"&maxlong="+North_Lng+"&zoom="+Zoom_Level, function(data) {
var xml = xmlParse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
createMarker(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")), markers[i].getAttribute('titre'));
}
markerClusterer = new MarkerClusterer(map, gmarkers);
});https://stackoverflow.com/questions/20721070
复制相似问题