2014-03-06 20 views
0

我想作爲成JSON對象/字符串來解析其在地圖上包含了繪製形狀的座標數組的存儲項目:問題上的轉換座標的陣列,以JSON

var polys =[]; 

google.maps.event.addListener(drawingManager, 'polygoncomplete', function (polygon) { 
    coordinates = (polygon.getPath().getArray()); 
    polys.push(coordinates); 
}); 

我用這個循環轉換數組JSON數據:

[ 
    { 
     "type":"POL", 
     "id":0, 
     "geometry":[ 
     { 
      "d":49.26870064827097, 
      "e":-122.89237976074219 
     }, 
     { 
      "d":49.25436113302859, 
      "e":-122.9092025756836 
     }, 
     { 
      "d":49.24965507167121, 
      "e":-122.88551330566406 
     } 
     ] 
    }, 

var info = []; 
for(var i = 0; i < polys.length; i++){ 
    info.push({ 
     "type":"POL", 
     "id": i, 
     "geometry": polys[i] 
    }); 
} 

每一件事情很好,但在結果我得到的座標作爲"d""e"

您能否讓我知道爲什麼會發生這種情況?既然我打算把JSON數據加載到MYSQL數據庫中,你認爲這是一個很好的繼續嗎?

回答

1

e -and d -Properties的對象是google.maps.LatLng的,你必須將它們轉換成一個數組:

var info = []; 
for(var i = 0; i < polys.length; i++){ 
    geometry=[]; 
    for(var j=0;j<polys[i].length;++j){ 
     geometry.push([polys[i][j].lat(),polys[i][j].lng()]); 
    } 
    info.push({ 
     "type":"POL", 
     "id": i, 
     "geometry": geometry 
    }); 
} 

要得到編碼的路徑使用這樣的:

var info = []; 
for(var i = 0; i < polys.length; i++){ 

    info.push({ 
     "type":"POL", 
     "id": i, 
     "geometry": google.maps.geometry.encoding.encodePath(polys[i]) 
    }); 
} 

注意:當您要使用編碼時,您必須加載geometry-library,默認情況下此庫不會被加載

+0

感謝Dr.Molle,只是有一個簡單的問題,我看到了您的文章,用於將數據保存到數據庫中並對幾何提示進行編碼。你能不能讓我知道如何在我的例子中編碼gemoetry? –

+0

我也遇到這個錯誤Uncaught TypeError:Object [object Array] has no method'lat' –

+0

抱歉,代碼現在已修復。 –