Щелчок по многоугольнику с помощью Google Maps API 3 - необходимо изменить на MouseOver (слой Geoxmlv3 & KML)

У меня есть Google Maps (API 3), на котором работает пользовательский KML (geoxml3) с полигонами, содержащими заголовки и описания.

Все работает нормально, однако мне нужно изменить щелчок полигона, который показывает, что информационное окно вместо этого работает при наведении курсора. Достаточно легко создать слушатель при наведении курсора мыши, который запускает функцию щелчка, однако мне нужно щелчок, чтобы запустить другую функцию, чтобы функция щелчка перезаписывалась с использованием этого метода.

Как я могу найти / скопировать код, который выполняется для функции щелчка полигона, и применить его к onmouseover вместо? Это возможно?

Обновление: я нашел этот раздел в geoxmlv3.js файл:

google.maps.event.addListener(gObj, 'click', function (e) {

    var iW = this.infoWindow;
    iW.close();
    iW.setOptions(this.infoWindowOptions);

    if (e && e.latLng) iW.setPosition(e.latLng);

    else if (this.bounds) iW.setPosition(this.bounds.getCenter());

    iW.setContent("<div id='geoxml3_infowindow'>" + iW.getContent() + "</div>");

    google.maps.event.addListenerOnce(iW, "domready", function () {

        var node = document.getElementById('geoxml3_infowindow');
        var imgArray = node.getElementsByTagName('img');

        for (var i = 0; i < imgArray.length; i++) {

            var imgUrlIE = imgArray[i].getAttribute("src");
            var imgUrl = cleanURL(doc.baseDir, imgUrlIE);

            if (kmzMetaData[imgUrl]) {
                imgArray[i].src = kmzMetaData[imgUrl].dataUrl;
            } else if (kmzMetaData[imgUrlIE]) {
                imgArray[i].src = kmzMetaData[imgUrlIE].dataUrl;
            }
        }
    });

    iW.open(this.map, this.bounds ? null : this);
});

Я пытался изменить событие "клик" на "mouseoverно это не вызывает mouseover или нажмите, чтобы работать

1 ответ

Решение

Вот решение (после долгих проб и ошибок!)

google.maps.event.addListener(poly,"mouseover",function(e) {

  var iW = this.infoWindow;
  iW.close();
  iW.setOptions(this.infoWindowOptions);

  if      (e && e.latLng) iW.setPosition(e.latLng);
  else if (this.bounds)   iW.setPosition(this.bounds.getCenter());

  iW.setContent("<div id='geoxml3_infowindow'>"+iW.getContent()+"</div>");

  iW.open(this.map, this.bounds ? null : this);
});

Затем просто измените функцию щелчка на что-то другое. Не забудьте также установить свою функцию mouseout, чтобы закрыть информационное окно тоже

Другие вопросы по тегам