2012-05-18 82 views
4

我在我的应用程序中有一个谷歌地图组件,允许用户绘制多边形,线条和标记。现在我想实现一个按钮,允许用户导出他/她在地图中绘制的东西的kml文件。谷歌地图api v3导出当前地图的kml文件

任何建议最好的方法来做到这一点。

您的意见和贡献表示高度赞赏

+0

? –

+0

我正在使用图形管理器库 – Omran

+0

我的计划只适用于用户的图纸不可编辑的情况,如果是这种情况,我可以写一个提纲。如果您允许编辑,我无法帮助您,我会将答案留空,以便其他人可以回答。 –

回答

3

我就总结一下我的想法,为用户绘制存储的坐标,然后点击“输出KML”按钮时,格式保存的坐标数据,并将其放置在一个textarea被复制(除非有办法提示下载?)。

下面是如何保存数据,当用户完成绘图元素:(我不知道检测编辑的好办法)

http://jsfiddle.net/8bwG2/

首先,添加事件侦听器每个绘图类型(线,多边形,标记)在完成时触发。您需要为每种类型分别设置一个事件侦听器。这里有一个用于多义线,每个侦听器将返回刚刚完成的绘图元素的类型。

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

+0

在[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