Попытка добавить функцию удаления маркера, щелкнув правой кнопкой мыши, чтобы добавить код маркера, щелкните левой кнопкой мыши.

Привет и заранее спасибо. Следующий модифицированный пример кода Google создает маркеры при щелчках левой кнопкой мыши и добавляет эти маркеры в массив. Эта часть отлично работает. Я попытался добавить второй обработчик событий, который удаляет маркер, если на нем щелкнуть правой кнопкой мыши. Я перепробовал много вариантов без успеха. Насколько я понимаю, использование marker.setMap (null) установит для связанного элемента массива значение null и удалит маркер с дисплея. Еще раз спасибо!

<!DOCTYPE html>
<html>
<head>
<title>Marker Test</title>

<style>
html, body {
    height: 100%;
    margin: 0;
    padding: 0;
}

#map-canvas, #map_canvas {
    height: 100%;
}

#map-canvas, #map_canvas {
    height: 650px;
}
</style>

<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>

<script>
var map;
var markers = [];

function initialize() {
    var NY = new google.maps.LatLng(40.739112,-73.785848);
    var mapOptions = {
        zoom: 16,
        center: NY,
        mapTypeId: google.maps.MapTypeId.TERRAIN
    }
    map = new google.maps.Map(document.getElementById('map-canvas'),mapOptions);

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

    google.maps.event.addListener(map, 'rightclick', function(event) {
                marker.setMap(null);
    });
}

function addMarker(location) {
        var marker = new google.maps.Marker({
        position: location,
        map: map
    });

    markers.push(marker);
}

google.maps.event.addDomListener(window, 'load', initialize);

</script>

</head>
    <body>
        <div id="map-canvas"></div>
    </body>
</html>

1 ответ

Вы хотите, чтобы прослушиватель событий "щелкнул правой кнопкой мыши" на маркере, а не на карте. Поместите это в функцию addMarker:

function addMarker(location) {
        var marker = new google.maps.Marker({
        position: location,
        map: map
    });
    google.maps.event.addListener(marker, 'rightclick', function(event) {
        marker.setMap(null);
    });

    markers.push(marker);
}

Примечание: это удалит маркер с карты, но не удалит его из массива маркеров.

Удалите один на карте, удалите эти строки:

google.maps.event.addListener(map, 'rightclick', function(event) {
            marker.setMap(null);
});
Другие вопросы по тегам