2013-04-01 59 views
0

我可以將JSON文件加載到頁面中(當前使用jQuery),並將內容設置爲頁面中的變量。使用Google Maps API顯示來自JSON文件的多邊形

JSON包含對構建輪廓的引用,如下所示;

[ 
    { 
     "buildingNumber":"7", 
     "buildingDescription":"Building Seven", 
     "spatial":{ 
      "points": 
       [ 
        "-1.2345678,50.9876543", 
        "-1.2345677,50.9876544", 
        "-1.2345676,50.9876545", 
        "-1.2345675,50.9876546" 
       ] 
     } 
    } 
] 

使用jQuery的$.each,我可以加載變量,並通過建築迭代,另外,每棟建築,我可以通過點很簡單迭代。

這個問題伴隨着這樣一個事實,即Google似乎只記錄了描述多邊形的下列方法;

var triangleCoords = [ 
    new google.maps.LatLng(25.774252, -80.190262), 
    new google.maps.LatLng(18.466465, -66.118292), 
    new google.maps.LatLng(32.321384, -64.75737) 
]; 

這很有道理,但我不明白如何從數組中獲得這種格式。我非常感謝任何關於從哪一個開始移動到另一個開始的指針,或者是描述多邊形的另一種方式。

我已經研究了array.push()函數,雖然看起來像是本地方法,但我看不到如何根據數組中的迭代值動態創建變量。

謝謝

回答

2

當前你的觀點是字符串。將它們轉換爲google.maps.LatLng物件:

var point = "-1.2345678,50.9876543"; 
var coords = point.split(","); 
var pt = new google.maps.LatLng(parseFloat(coords[0]), 
           parseFloat(coords[1])); 

然後推導致google.maps.LatLng物件到您的「路徑」數組的多邊形。

0

你有一串代表經度和緯度的字符串,你需要一個google.maps.LatLng的數組。我會使用array.map()函數 - docs here

var polyCoords = spatial.points.map(function(point) { 
    var pointCoords = point.split(','); 
    return new google.maps.LatLng(
     parseFloat(pointCoords[0]), 
     parseFloat(pointCoords[1])); 
}); 
相關問題