我在我的应用程序中有一个谷歌地图组件,允许用户绘制多边形,线条和标记。现在我想实现一个按钮,允许用户导出他/她在地图中绘制的东西的kml文件。谷歌地图api v3导出当前地图的kml文件
任何建议最好的方法来做到这一点。
您的意见和贡献表示高度赞赏
我在我的应用程序中有一个谷歌地图组件,允许用户绘制多边形,线条和标记。现在我想实现一个按钮,允许用户导出他/她在地图中绘制的东西的kml文件。谷歌地图api v3导出当前地图的kml文件
任何建议最好的方法来做到这一点。
您的意见和贡献表示高度赞赏
我就总结一下我的想法,为用户绘制存储的坐标,然后点击“输出KML”按钮时,格式保存的坐标数据,并将其放置在一个textarea被复制(除非有办法提示下载?)。
下面是如何保存数据,当用户完成绘图元素:(我不知道检测编辑的好办法)
首先,添加事件侦听器每个绘图类型(线,多边形,标记)在完成时触发。您需要为每种类型分别设置一个事件侦听器。这里有一个用于多义线,每个侦听器将返回刚刚完成的绘图元素的类型。
google.maps.event.addDomListener(drawingManager, 'polylinecomplete', function(line) {
path = line.getPath();
document.getElementById("action").value += "#polyline\n";
for(var i = 0; i < path.length; i++) {
document.getElementById("action").value += path.getAt(i) + "\n";
}
});
我将所述坐标直到一个共享textarea的,但应代替进入阵列变量的数组,与多边形一个变量,一个用于折线和一个用于标记。
从这些内部变量读取时,将Google Maps LatLngs转换为KML格式long,lat,altitude。你将不得不对每个元素的名称和描述进行创意。
最后,请求KML时,遍历标记,线和面变量是否使用了描绘管理/库或定制控件生成KML格式的元素,如Point-coordinates, LineString, and Polygon-outerBoundaryIs
在[Google Maps API v3群组中的此线程](https://groups.google.com/group/google-maps-js-api- v3/browse_frm/thread/bf3f0785def955a5/5f7cf2abf95439a6),“您在多边形的路径上附加了一个set_at侦听器,例如:''google.maps.event.addListener(polygon.getPath(),'set_at',function(index){/ *在这里添加代码* /});' – geocodezip
? –
我正在使用图形管理器库 – Omran
我的计划只适用于用户的图纸不可编辑的情况,如果是这种情况,我可以写一个提纲。如果您允许编辑,我无法帮助您,我会将答案留空,以便其他人可以回答。 –