Событие щелчка маркера не срабатывает - PullRequest
0 голосов
/ 09 ноября 2018

Я взял код, уже работающий, и у меня возникла проблема с некоторыми маркерами, к которым не было прикреплено событие click.

Чтобы попытаться заставить это работать, я сократил код и только что реализовал базовый пример, показанный на этой странице - https://developers.google.com/maps/documentation/javascript/examples/event-simple, внутри структуры моего текущего кода.

Однако это не работает, маркер установлен, но событие щелчка не прикреплено.

Прикрепление события нажатия на карту работает.

Кто-нибудь есть какие-либо предложения о том, что может быть причиной этого?

init() {
    this.loadScript(`https://maps.googleapis.com/maps/api/js?client=${this.apiClient}`);
}

loadScript(url) {
    const script = document.createElement('script');

    script.type = 'text/javascript';

    script.src = url;
    document.getElementsByTagName('body')[0].appendChild(script);

    setTimeout(() => {
        this.initMap();
    }, 500);
}

initMap() {
    const myLatlng = {lat: -25.363, lng: 131.044};

    const map = new google.maps.Map(this.mapElement, {
        zoom: 4,
        center: myLatlng
    });

    const marker = new google.maps.Marker({
        position: myLatlng,
        map: map,
        title: 'Click to zoom'
    });

    map.addListener('center_changed', function() {
        // 3 seconds after the center of the map has changed, pan back to the
        // marker.
        window.setTimeout(function() {
            map.panTo(marker.getPosition());
        }, 3000);
    });

    marker.addListener('click', function markerClick() {
        map.setZoom(8);
        map.setCenter(marker.getPosition());
    });
}

1 Ответ

0 голосов
/ 13 ноября 2018

Я делаю несколько изменений и работает

const marker = new google.maps.Marker({
            position: myLatlng,
            map: map,
            title: 'Click to zoom',
            icon: 'https://maps.google.com/mapfiles/kml/shapes/parking_lot_maps.png'
        });

        map.addListener('center_changed', function () {
            // 3 seconds after the center of the map has changed, pan back to the
            // marker.
            window.setTimeout(function () {
                map.panTo(marker.getPosition());
            }, 3000);
        });

        marker.addListener('click', function () {
            map.setZoom(8);
            map.setCenter(marker.getPosition());
        });
        marker.setMap(map);
...