2016-09-14 4 views
-1

Я использую этот код для выбора местоположения на карте, нажав на него. Каждый раз, когда я нажимаю на карту, он выбирает новое местоположение и показывает новый маркер на карте. Я хочу скрыть/удалить/очистить старый маркер с карты. Как очистить маркер от карты одним нажатием кнопки?Удалить маркер с карты

var placedMarkers = 0; 
var availableMarkersToPlace = 1; 
setTimeout(function(){ 
    if(placedMarkers >= availableMarkersToPlace) 
     return; 
    placedMarkers++; 
    var map = Appery("google_map").gmap; 
    google.maps.event.addListener(map, 'click', function(event) { 
     localStorage.setItem('selectedLat', event.latLng.lat()); 
localStorage.setItem('selectedLng', event.latLng.lng()); 
     placeMarker(event.latLng,map); 
     alert(event.latLng); 



    }); 

}, 1000); 
+0

Как вы храните refere nce к старому маркеру? – scaisEdge

+0

Этот вопрос слишком расплывчатый. Как вы хотите удалить их? Нажмите кнопку? Ссылка? Двойной клик? Возможно, попробуйте выполнить поиск в Google: https://developers.google.com/maps/documentation/javascript/examples/marker-remove – Twisty

ответ

0

Вы должны хранить маркеры, созданные в надлежащем вар, например:

var my_old_marker 

тогда, когда вы создаете новый флиртует маркер вы должны установить скрыть этот маркер с помощью setMap (неопределенные)

my_old_marker.setMap(null); 

вы должны создать новый маркер и магазин в my_old_marker

my_old_marker = new google.maps.Marker({ 
     position: location, 
     map: map 
}); 

Если вы хотите сделать коллекцию маркеров и в конечном счете скрыть .. вы должны использовать массив, например:

var markers = []; 

затем слушателем на кнопку вы можете добавить маркер, используя функцию addMarker

map.addListener('click', function(event) { 
     addMarker(event.latLng); 
    }); 

    // Adds a marker to the map and push to the array. 
    function addMarker(location) { 
    var marker = new google.maps.Marker({ 
     position: location, 
     map: map 
    }); 
    markers.push(marker); 
    } 

и последний вы можете использовать кнопку для вызова функции для удаления маркеров, когда вам нужно

function deleteMarkers() { 
    for (var i = 0; i < markers.length; i++) { 
     markers[i].setMap(null); 
    } 
    markers = []; 
    } 
+0

Спасибо за ответ ... Извините, мне может потребоваться перефразировать мой вопрос для ясности ... Этот код помещает маркеры каждый раз, когда пользователь нажимает на карту. Есть ли способ разместить только один маркер на каждом клике? Как я могу это сделать, когда маркер будет просто перемещен? –

+0

У меня есть ответ, используя массив. – scaisEdge

Смежные вопросы