我想向您寻求有关我的代码的帮助。我有脚本,可以通过 $。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)。
非常感谢您的帮助
答案 0 :(得分:0)
在使用标记和markerCluster时,需要确保其他要修改标记的函数都可以访问标记数组和markerCluster对象。每当调用按钮单击函数时,都需要检查是否是否是区域0。如果不是0区,请致电markerCluster.clearMarkers()
,在0区,请致电markerCluster.addMarkers(markers)
这是标记聚类器的参考文档
https://googlemaps.github.io/js-marker-clusterer/docs/reference.html
我无法告诉您为什么panTo或setZoom函数在没有看到更多代码的情况下无法工作。