google maps api v3导出当前地图的kml文件

时间:2012-05-18 21:26:58

标签: google-maps-api-3 export kml

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

建议采用最佳方法。

非常感谢您的评论和贡献

1 个答案:

答案 0 :(得分:4)

我总结了我的想法,即在用户绘制时存储坐标,然后在单击“输出KML”按钮时,格式化保存的坐标数据并将其放在要复制的文本区域中(除非有提示的方法)下载?)。

以下是用户完成绘图元素时保存数据的方法:

http://jsfiddle.net/8bwG2/

(我不知道检测编辑的好方法。)

首先,为每个绘图类型(线,多边形,标记)添加事件侦听器,以便在完成时触发。每种类型都需要一个单独的事件监听器。这是Polylines的一个,每个监听器都将返回刚刚完成的绘图元素的类型。

    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 LatLngs转换为KML格式long,lat,altitude。您必须对每个元素的名称和描述都有创意。

最后,当请求KML时,循环标记,line和polygon变量以生成KML格式的元素,例如Point-coordinates, LineString, and Polygon-outerBoundaryIs