如何从 Google Maps API V3 中的 KML 图层中删除所有事件

Mo *_*kol 0 google-maps kml data-layers mouseevent google-maps-api-3

我正在制作一个使用谷歌地图来帮助部署太阳能的网络应用程序。本质上,我正在全屏加载谷歌地图并使用以下代码覆盖 KML 图层:

window.solarLayer = new google.maps.KmlLayer({
url: 'somelink'
}); 
window.solarLayer.setMap(window.map);
Run Code Online (Sandbox Code Playgroud)

该应用程序的另一个功能是,用户可以单击地图上的任意位置,并使用单击点处的纬度和经度,将太阳能数据返回给用户。

通过使用点击事件处理程序,这一切都可以正常工作:

google.maps.event.addListener(map, 'click', function(event) {
    var latitude = event.latLng.lat();
    var longitude = event.latLng.lng();
    console.log( latitude + ', ' + longitude );
});
Run Code Online (Sandbox Code Playgroud)

但是,地图中具有 KML 图层的部分仅注册该图层的单击,而不会访问我创建的单击事件...

有谁知道如何禁用 KML 图层的点击事件?或者如何让我的事件侦听器取代 KML 层的事件侦听器?

我尝试通过在 KML 图层和地图上使用单击事件来获取纬度和经度,但这只会产生该图层所在位置的静态经度,而不是用户实际单击的位置。

感谢您提前提供任何帮助!

geo*_*zip 5

将KmlLayer 的可点击选项设置为 false。

来自KmlLayerOptions 文档

可点击| 类型:布尔值

如果为 true,则该层接收鼠标事件。默认值为 true。

代码片段:

var map;

function initialize() {
  map = new google.maps.Map(
    document.getElementById("map_canvas"), {
      center: new google.maps.LatLng(37.4419, -122.1419),
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });
  window.solarLayer = new google.maps.KmlLayer({
    url: 'http://googlemaps.github.io/js-v2-samples/ggeoxml/cta.kml',
    clickable: false
  });
  window.solarLayer.setMap(window.map);


  google.maps.event.addListener(map, 'click', function(event) {
    var latitude = event.latLng.lat();
    var longitude = event.latLng.lng();
    document.getElementById('coords').innerHTML = event.latLng.toUrlValue(6);
    console.log(latitude + ', ' + longitude);
  });
}
google.maps.event.addDomListener(window, "load", initialize);
Run Code Online (Sandbox Code Playgroud)
html,
body,
#map_canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="coords"></div>
<div id="map_canvas"></div>
Run Code Online (Sandbox Code Playgroud)