Google Maps-加载标记-使用markercluster过滤

时间:2019-04-18 13:41:22

标签: javascript jquery ajax google-maps

我想向您寻求有关我的代码的帮助。我有脚本,可以通过 $。ajax 下载和处理json文件。通过过滤,我还使用了函数moveToLocation()。效果很好,但不适用于 markerclsuter ,因为缩放后我的点仍然“聚集”。

function moveToLocation(lat, lng, zoom){
    var center = new google.maps.LatLng(lat, lng);
    map.panTo(center);
    map.setZoom(zoom);
}

function addMarkers(v_data) {

        if(v_data!= null){
            removeMarkers();
        }

        $.ajax({ 
            type: 'POST', 
            url: 'get-places-v3.php', 
            data: {data : JSON.stringify(v_data)},
            dataType: 'json',
            success: function (data) { 

                //initialize(data.regionGps[0].lat, data.regionGps[0].lng, data.regionGps[0].zoom);
                console.log(data.regionGps[0].lat + ' ' + data.regionGps[0].lng);
                moveToLocation( data.regionGps[0].lat, data.regionGps[0].lng, data.regionGps[0].zoom );

                //console.log(data.regionGps[0].lat);

                $.each(data.locations, function(index, element) {

                    var latLng = new google.maps.LatLng(element.lat, element.lng);

                    var marker = new google.maps.Marker({
                        position: latLng,
                        map: map,
                        // icon: icon,
                        title: element.name
                    });
                    markers.push(marker);
                    var details = '<strong>' + element.name + '</strong><br>'  + element.adress;

                    bindInfoWindow(marker, map, infowindow, details);

                });
                markerCluster = new MarkerClusterer(map, markers, {
                    imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'
                });
            }
        }); 
}

所以我想解决2个问题:

1)如上所述,我需要在使用过滤器后“取消”群集(但是,如果我选择“区域0”,则需要“重新激活”群集)

2)我不知道为什么,但是功能“ movetolocation”仅在再次使用后才第一次起作用。

这是工作示例: https://ugh.beladzi.cz/show-data-places-v3.php(我不知道如何将json导入codepen或jsfiddle)。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

在使用标记和markerCluster时,需要确保其他要修改标记的函数都可以访问标记数组和markerCluster对象。每当调用按钮单击函数时,都需要检查是否是否是区域0。如果不是0区,请致电markerCluster.clearMarkers(),在0区,请致电markerCluster.addMarkers(markers)

这是标记聚类器的参考文档

https://googlemaps.github.io/js-marker-clusterer/docs/reference.html

我无法告诉您为什么panTo或setZoom函数在没有看到更多代码的情况下无法工作。