使用$ .ajax调用使用MarkerClusterer的正确方法

时间:2017-11-07 16:49:53

标签: javascript google-maps google-maps-api-3

我想使用库" MarkerClusterer" (Google page)通过API在Google地图上标记我的标记。

我试图将它实现为我的实际代码,这些代码可以工作,但是当我缩小/在群集中消失时。当我刷新页面时,簇号不一样。为什么?

以下是我想要使用此API的内容:

enter image description here

jsfiddle : my code

$.ajaxq (qyName, {
        url: url,
        dataType: 'json'
    }).done(function( data ) {
                var address = getParameterByName('address', this.url);
                var index = errorArray.indexOf(address);
                try{
                    var p = data.results[0].geometry.location;
                    var latlng = new google.maps.LatLng(p.lat, p.lng);

                    marker = new google.maps.Marker({
                        position: latlng,
                        map: map
                    });

        // Add markers to array
        map.markers.push(marker);

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

});

我做错了什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

我回答我的问题,因为我找到了解决方案感谢@Lixus让我以正确的方式进行!

我们必须在ajax调用之外设置新的MarkerClusterer,并为标记设置一个空数组。然后我们用标记数组调用方法.addMarkers()。

var mcOptions    = {gridSize: 50, maxZoom: 15, imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'};
var mc           = new MarkerClusterer(map, [], mcOptions);

然后在我们的ajax调用中,我们做了类似的事情:

 marker = new google.maps.Marker({
            position: latlng,
            map: map,
            icon: icon,
            // Custom property to hold the filters options, it'a used below to filter the markers
          });

          // Add markers to array
          map.markers.push(marker);

          mc.addMarkers(map.markers);

Working jsfiddle