我正在制作一个使用谷歌地图来帮助进行太阳能部署的网络应用程序。实质上,我正在全屏加载谷歌地图,并使用以下代码覆盖KML图层:
window.solarLayer = new google.maps.KmlLayer({
url: 'somelink'
});
window.solarLayer.setMap(window.map);
此应用程序的另一个功能是用户可以单击地图中的任意位置,并使用点击点处的纬度和逻辑,它将向用户返回太阳能数据。
这一切都可以正常使用点击事件处理程序:
google.maps.event.addListener(map, 'click', function(event) {
var latitude = event.latLng.lat();
var longitude = event.latLng.lng();
console.log( latitude + ', ' + longitude );
});
但是,具有KML图层的地图部分只会记录图层的点击次数,而不会访问我创建的点击事件...
有谁知道如何禁用KML图层的点击事件?或者如何使我的事件监听器取代KML层的事件?
我尝试通过在KML图层和地图上使用点击事件来获取lat和long,但这只会产生静态lat长度,而不是用户实际点击的位置。
提前感谢您的帮助!
答案 0 :(得分:4)
将clickable option of the KmlLayer设为false。
来自the KmlLayerOptions documentation:
可点击|输入:boolean
如果为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);
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="coords"></div>
<div id="map_canvas"></div>