使用Google Maps API 3单击多边形 - 需要更改为MouseOver(Geoxmlv3& KML图层)

时间:2014-07-18 11:10:56

标签: javascript google-maps google-maps-api-3 kml geoxml3

我有一个运行自定义KML(geoxml3)的Google地图(API 3),其中的多边形包含标题和说明。

一切正常,但是我需要更改多边形点击,这样可以显示信息窗口在悬停时工作。创建一个运行click函数的鼠标悬停监听器很容易,但我需要单击才能运行另一个函数,因此使用此方法将覆盖click函数。

如何找到/复制为多边形点击功能运行的代码并将其应用于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);
});

我尝试更改“点击”按钮。活动到&#39; mouseover&#39;但这不会导致mouseover或点击工作

1 个答案:

答案 0 :(得分: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功能以关闭infowindow