我正在研究一个项目.jsp文件,该文件显示4 kml层:燃气管道,气体传感器,阀门和区域。
问题在于我想从地标的描述中提取数据并使用它,但是当我点击地标时,有时它会起作用,而其他它不会。我根本无法理解为什么......
我已经创建了一个代码的JSFiddle示例。我添加了2 kml层,一个用于管道,另一个用于传感器。每个管道都有多个传感器(或至少一个)。我在元数据更改中一个接一个地添加了图层,以确保图层顺序的一致性。我为两个层添加了2个单击侦听器,这些层提取描述并处理字符串并提取我需要的内容,以单独的div显示为文本。
有时当我点击传感器或管道时,数据会被提取,有时则表示找不到数据(字符串未定义)。我得到状态=" ZERO_RESULTS"。根据谷歌的说法,如果地理编码器在远程位置通过拉杆,则可能会发生这种情况。我查看了日志,latlog在点(。)之后有超过9个数字,在我的kml中我只有6个。
但这并不是我猜的问题,因为有时候,虽然latlng coord非常准确,(点后面有9个字符),但找到了地标并提取了我需要的信息。它只是命中或错过。
有人可以向我解释为什么会这样吗?
JSFiddle链接:http://jsfiddle.net/sxNy9/185/light/
KML文件: - https://sites.google.com/site/kmlholdersherb/BrasovLayer_TeziGaz.kml?attredirects=0&d=1 - https://sites.google.com/site/kmlholdersherb/BrasovLayer_Senzori.kml?attredirects=0&d=1
谢谢!
编辑:
包含kml图层:
var PIPES= new google.maps.KmlLayer({url: 'URL HERE', preserveViewport:true});
var SENSORS= new google.maps.KmlLayer({url: 'URL HERE', preserveViewport:true });
之后我将它们添加到地图上。
现在是听众。
google.maps.event.addListener(SENSORS, 'click', function(kmlEvent) {
var text = kmlEvent.featureData.name;
var str = kmlEvent.featureData.description;
//FIND OUT THE STREET
var x = str.indexOf(".");
var y = str.indexOf(":");
var street= str.substring(y+2,x);
//ID
var a = str.indexOf("#");
var ID = str.substring(a+1,str.length);
var finaltext = street+ " " + ID;
showInContentWindow(finaltext); // adding the string into html ( aka the result)
});
然后是PIPES的另一个听众,这是相同的。