首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新MarkerClusterer

更新MarkerClusterer
EN

Stack Overflow用户
提问于 2013-12-21 16:27:15
回答 1查看 1.2K关注 0票数 0

我已经设法更新了地图,根据哪些地方(从我的数据库)包括在当前的地图。然而,我也有一些问题需要用同样的方式来更新俱乐部成员。我尝试在markerClusterer.clearMarkers(Null)之后添加gmarkersi.setMap();但是它不起作用(甚至标记也不再更新)。

下面是代码:

代码语言:javascript
复制
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);
}

谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-21 19:22:23

您的markerClusterer是在对downloadUrl的回调中定义的,在该范围之外是不可访问的。

最简单的解决方法是在全局上下文中定义它。

代码语言:javascript
复制
var map;  
var gmarkers = [];
var markerClusterer = null;

function initialize() {

然后在downloadUrl回调中:

代码语言:javascript
复制
    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);
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20721070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档