В Google Maps API v2 я использовал map.clearOverlays()
для удаления маркера и повторного рисования.
Как я могу это сделать с помощью Google Maps API v3?
Спасибо
В Google Maps API v2 я использовал map.clearOverlays()
для удаления маркера и повторного рисования.
Как я могу это сделать с помощью Google Maps API v3?
Спасибо
Подробнее о различных вариантах, доступных вам, см. здесь, но теперь вам нужно прокручивать маркеры и удалять их по отдельности. Ваш код должен выглядеть примерно так:
var markers = [];
function clearOverlays() {
while(markers.length) { markers.pop().setMap(null); }
markers.length = 0;
}
markers.push(marker);
google.maps.event.addListener(marker,"click",function(){});
Это хорошо:
http://apitricks.blogspot.com/2010/02/clearoverlays-in-v3.html
Статья в случае, если ссылка умирает:
clearOverlays() in V3
В API v3 нет clearOverlays(). Были представлены некоторые методы. Я думаю, что это самое простое.
Нажимайте все наложения в массиве при создании (как обычно). Следующий код очистит как карту, так и массив:
while(overlays[0])
{
overlays.pop().setMap(null);
}
Метод pop() массива удаляет последний элемент массива и возвращает этот элемент. 'while' сохраняет это, пока в массиве есть элементы. Когда наложения [0] больше не существуют, миссия завершается, и код будет продолжен.
Вы можете взглянуть на документацию Google Maps, поскольку он показывает простой метод deleteOverLays http://code.google.com/apis/maps/documentation/javascript/overlays.html
// Deletes all markers in the array by removing references to them
function deleteOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
}
Как насчет этого? Я не хочу использовать .setMap(null), потому что я не знаю лучшего способа снова запустить polyShape.
polyShape = new google.maps.Polygon(
{
strokeColor : '#000000',
strokeOpacity : 0.3,
strokeWeight : 1,
fillColor : "#000000",
fillOpacity : 0.26,
geodesic : true
});
Затем выполните итерацию по пути, чтобы удалить его.
var path = new google.maps.MVCArray;
/**
* Delete all points inside Map
*/
function clearMap()
{
//clear markers
for (var i = 0; i < markers.length; i++)
{
markers[i].setMap(null);
}
markers = [];
//clear polygon, still finding more elegant way
while (polyShape.getPath().length)
{
path.removeAt(0);
}
}
Вы можете найти хороший пример, представленный Google здесь: http://code.google.com/p/gmaps-samples-v3/source/browse/trunk/clear-all-overlays/clear-all-overlays.html
В принципе идея заключается в удалении
Я нашел другое решение, и оно работает очень хорошо он удалит все накладки, которые существуют на карте
gmap.overlayMapTypes.setAt( 0, null);
в то время как gmap - ваш объект карты