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 图层和地图上使用单击事件来获取纬度和经度,但这只会产生该图层所在位置的静态经度,而不是用户实际单击的位置。
感谢您提前提供任何帮助!
将KmlLayer 的可点击选项设置为 false。
可点击| 类型:布尔值
如果为 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)
| 归档时间: |
|
| 查看次数: |
2009 次 |
| 最近记录: |