点在多边形内 - json或kml?

时间:2013-11-13 19:30:26

标签: javascript json google-maps google-maps-api-3 kml

我正在尝试决定是否要使用json或kml将多边形存储在服务器上的文件中。我必须读入此文件并检查给定点所在的多边形。我被kml所吸引,因为我可以用Google Maps Javascript API将整个kml文件渲染成两行:

var importedKml = new google.maps.KmlLayer('mykml.kml'); 
importedKml.setMap(map);

但是,我找不到内置函数来检查某个点是否在kml文件中的所有多边形内。我知道我可以使用下面的代码检查点是否在多边形中:

google.maps.geometry.poly.containsLocation(latlngPoint, polygon);

但看起来我必须解析kml并转动每个

<Placemark><Polygon> 
首先将

功能添加到google.maps.polygon对象中。

我考虑过回到json,因为json对象非常可定制,我可以直接调用类似

的内容
//json object polygonFile from server
google.maps.geometry.poly.containsLocation(latlngPoint, polygonFile.polygons[0].polygon);

我自己建造的结构。没有快速简单的方法将json渲染到地图而不先将其转换为谷歌地图对象然后再渲染它们,但它会出现。

有没有办法检查点是否在kml文件中的多边形内,而首先将每个要素转换为谷歌地图对象?如果没有,将json对象转换为谷歌地图对象听起来就像是要走的路。

1 个答案:

答案 0 :(得分:0)

GEarthExtensions怎么样? Polygon对象有一个函数“containsPoint” 这是一个例子: http://code.google.com/p/earth-api-utility-library/source/browse/trunk/extensions/examples/point-in-poly.html