我正在开发一个Intranet项目,因此我的KML文件无法在外部使用.这意味着我依赖geoXML3库将我的XML解析到我的Google地图上.然而,缺乏关于事件监听器的文档令人沮丧.我想调用一个点击监听器并传入geoXML3地标.我正在尝试执行以下操作,但是clickListener总是接收在afterParse循环中处理的最后一个多边形p.
kml = new geoXML3.parser({
suppressInfoWindows: true,
map: map,
afterParse: function (doc) {
for (var i = 0; i < doc[0].placemarks.length; i++) {
var p = doc[0].placemarks[i];
google.maps.event.addListener(
p.polygon,
"click",
function () { clickListener(p); }
);
}
}
});
kml.parse(mapSettings.kmlLocation);
Run Code Online (Sandbox Code Playgroud)
如果我使用Google Maps API的KML支持,我可以执行此操作并将多边形传递给侦听器.
kml = new google.maps.KmlLayer(mapSettings.kmlLocation, {
suppressInfoWindows: true,
preserveViewport: false,
map: map
});
google.maps.event.addListener(
kml,
"click",
clickListener
};
Run Code Online (Sandbox Code Playgroud)
是否有任何方法(更可取)将正确的geoXML3地标可靠地传递给clickListener,或者(不太可取)geoXML3.parser我可以将点击事件绑定到并接收kmlMouseEvent我使用Google Maps API kml解析器的方式?最终我需要能够改变多边形的样式并跟踪它在数组中的选择/取消选择.
在我的应用程序中,我想使用谷歌地图api v3在谷歌地图上显示一个kml文件.
当我在寻找解决方案的时候,我遇到了geoxml3,但我真的不明白它的用途和用途.
任何人都可以解释它是否使用geoxml3覆盖我的应用程序本地存储的kml文件的解决方案.
或者geoxml3的主要用途是什么?
我正在使用geoxml3加载KML文件。谷歌地图加载时将应用中心位置,但是geoxml3应用kml文件后,它将移动中心位置。
var myOptions = {
zoom : 2,
minZoom:2,
maxZoom:10,
center : latlng,
disableDefaultUI: true,
suppressInfoWindows : true,
preserveViewport : true
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var geoXml = new geoXML3.parser({
map: map,
singleInfoWindow: false,
afterParse: useTheData,
suppressInfoWindows : true,
center : latlng
});
geoXml.parse(url_kml+'basins.kml');
Run Code Online (Sandbox Code Playgroud)