В своем приложении phonegapp / cordova я использую инструмент google maps и мне нужно иногда менять точки, показанные на нем.Я нашел некоторый полезный код здесь , чтобы удалить мои маркеры из карт Google, которые я использую.
Моя проблема, я также использую кластеры маркеров, и у меня здесь странная проблема.
Для своих карт я использую следующие настройки:
{
showControls: true,
key: { google: "XXXXXX" },
center: center,
width: "100%",
height: "95%",
zoom: zoom,
provider: "google",
mapType: "satellite",
autoAdjust: false,
onReady: SetMap
}
Где SetMap и другие вызываемые функции:
var mmm = null;
var markerCluster = null;
// Removes the markers from the map, but keeps them in the array.
function clearMarkers() {
setMapOnAll(null);
}
// Sets the map on all markers in the array.
function setMapOnAll(map) {
for (var i = 0; i < markerCluster.markers_.length; i++) {
markerCluster.markers_[i].setMap(map);
}
}
function SetMap (s) {
if (mmm == null)
mmm = s.originalMap;
else {
clearMarkers();
markerCluster.markers_ = [];
}
var map = mmm;
var markers = [];
for (var i = 0; i < pointsOnMapList.length; i++) {
var data = pointsOnMapList[i];
var latLng = new google.maps.LatLng(data.location[0], data.location[1]);
var marker = createMarker(latLng, data.title, map, data.idimp);
markers.push(marker);
}
markerCluster = new MarkerClusterer(map, markers, { imagePath: 'images/m' });
}
Когда я обновляю свой набор данных, я просто вызываю функцию SetMap.
Это "почти" работа.Моя цель - изменить точки на карте после того, как пользователь их отфильтрует.Я получаю новый набор данных из моего API, и мне нужно стереть карту и снова заполнить ее новыми точками.
Пример: скажем, у меня есть эта карта:
Затем я фильтрую свои точки на карте и получаю старые и новые точки на тех же картах:
Затем, как по волшебству, если я просто изменю масштаб карты, старые точки исчезают!
ПРИМЕЧАНИЕ: отдельные маркеры удаляются какЯ фильтрую свой набор данных, не меняя масштаб.Эта проблема только для кластеров маркеров.Как я могу их удалить?