2013-02-28 115 views
1

我有一個谷歌地圖多邊形對象:無法在谷歌保存多邊形映射

var poly = new google.maps.Polygon({ 
    paths: [ 
    new google.maps.LatLng(25.774252, -80.190262), 
    new google.maps.LatLng(18.466465, -66.118292), 
    new google.maps.LatLng(32.321384, -64.75737) 
    ] 
}); 

我試圖通過jQuery的AJAX將其發送到MySQL數據庫:

$.post("savePolygon.php", {polygon: poly}); 

我得到這個錯誤控制檯:

TypeError: Cannot call method 'lat' of undefined 

我已經看到了關於拯救的多邊形一些其他職位,他們都表示,從保利中提取的經緯度的,節省日他們在一個分貝。當我這樣做雖然:

var latLngs = poly.getPath().getArray(); 
$.post("savePolygon.php", {polygon: latLngs}); 

我得到同樣的錯誤。看起來陣列原型中有一個函數叫'lat'。我想知道如何提取這些值並通過AJAX發送它們,以及爲什麼會出現此錯誤?

回答

5

使用google.maps.geometry.encoding.encodePath()來編碼路徑。此方法返回一個字符串,非常適合存儲到數據庫中。重複使用google.maps.geometry.encoding.decodePath()

請注意:默認情況下,幾何庫不會被加載,您必須通過將&libraries=geometry添加到maps-API-script的src來加載它。

要解釋爲什麼你不能直接存儲路徑(例如,作爲JSON):當你存儲的路徑(陣列),其中包含經緯度的
,你將失去的經緯度的原型,這是因爲必要的它定義了檢索屬性的方法(lat()lng()

+0

可以使用encodePath()對它進行編碼並在服務器端解碼它嗎? – Nick 2013-03-27 09:34:50

+0

不,您可以將編碼後的多邊形存儲在數據庫中,稍後在需要時在客戶端解碼它 – 2013-03-27 18:19:55

+0

並且您如何處理矩形而不是多邊形? – Bertaud 2013-06-05 23:51:16