нажатие кнопки в информационном окне приводит к нажатию карты, чтобы зарегистрироваться на Google Maps api v3 - PullRequest
0 голосов
/ 04 марта 2012

У меня есть информационное окно с кнопкой «Стереть запись», которое при нажатии удаляет маркер и закрывает информационное окно. когда я нажимаю кнопку «стереть запись», он удаляет маркер и просто закрывает информационное окно, но также регистрирует еще один щелчок по карте, и я понятия не имею, почему, и это сводит меня с ума.

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

        //global variable to keep track of which was the last marker clicked
        var lastMarkerJustClicked;

        function load(){
            //create the map and everything, add the following listener
            google.maps.event.addListener(map, 'click', function (event) {
                //firebug has been telling me that after i click "erase entry" and my marker is removed and my infowindow closes, i end up here
                makeParticularMarker(event.latLng);
            });
        }

        function makeParticularMarker(marker_parameter) {
            var markerLocation = //do stuff to get the right marker parameter
            var markerWithLocation = new google.maps.Marker({
                position: markerLocation,
                map: map
            }); 
            var html = "<input type='button' value='Erase Entry' onclick=eraseEntry() />"
            var markerWithInfo = createMarkerWithHTML(markerWithLocation, html);
        }

        function createMarkerWithHTML(markerWithLocation, html) {
            var markerWithInfo = google.maps.event.addListener(markerWithLocation, 'click', function () {
                infoWindow.setContent(html);
                infoWindow.open(map, markerWithLocation)
                lastMarkerJustClicked=markerWithLocation;
            });
        }

        function eraseEntry() {
            infoWindow.close()
            lastMarkerJustClicked.setMap(null);
        }

1 Ответ

0 голосов
/ 05 марта 2012

я нашел ответ здесь: http://groups.google.com/group/google-maps-js-api-v3/browse_thread/thread/221876cc70bea9c6?pli=1

это связано с распространением. и вы останавливаете это, делая что-то вроде этого

function doSomething(e)
{
    if (!e) var e = window.event;
    e.cancelBubble = true;
    if (e.stopPropagation) e.stopPropagation();
}

этот сайт лучше объясняет это: http://www.quirksmode.org/js/events_order.html

...