2012-05-18 121 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