谷歌地图API V3导出当前地图的KML文件

7

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

请问最佳方法是什么?

非常感谢您的意见和贡献。


你是使用绘图管理器/库还是自定义控件? - Tina CG Hoehr
我正在使用绘图管理库。 - Omran
只有当用户的绘图不可编辑时,我的计划才能奏效。如果是这种情况,我可以写一个大纲。如果允许编辑,我无法帮助您,并且我将留下答案为空,以便其他人回答。 - Tina CG Hoehr
是的,Lilina地图绘制是不可编辑的。 - Omran
1个回答

5
我会将我的想法总结为在用户绘制时存储坐标,然后当单击“输出KML”按钮时,格式化保存的坐标数据并将其放置在文本区域中以便复制(除非有一种提示下载的方式?)。
以下是用户完成绘图元素时我保存数据的方法:

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";
        }
    });

我将坐标直接放入共享文本区域中,但实际上它们应该进入一个二维数组变量中,有一个变量用于多边形,一个用于折线和一个用于标记。
当从这些内部变量中读取时,将Google Maps的LatLng转换为KML格式的经度、纬度和海拔。您需要在每个元素的名称和描述方面进行创意设计。
最后,在请求KML时,循环遍历标记、线和多边形变量以生成KML格式的元素,例如Point-Coordinates、LineString和Polygon-outerBoundaryIs

检测编辑的一种选项在Google Maps API v3组中的此线程中讨论,“您可以在多边形路径上附加set_at监听器,例如:” google.maps.event.addListener(polygon.getPath(),'set_at',function(index){/*在此添加代码。*/}); - geocodezip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接