2012-04-05 43 views
0

所以這裏是我的問題,我相信很多人都跑到了。我有一個JSON文件,其中包含狀態數組以及與該狀態對應的經緯度值的子數組。如何從多邊形返回數組點?

我循環遍歷各個狀態,然後循環遍歷點,然後構建50個多邊形。

我現在需要居中並放大狀態,當它被點擊。我意識到我可以再次循環點並添加邊界。但是,當我在控制檯中顯示多邊形時,我可以單擊這些值並查看點。

我假設有一種方法可以簡單地訪問這些點而不需要重新通過它們......這些點已經與一個與狀態相關聯的多邊形相關聯。

當我嘗試console.log(newpoly.latLngs);我返回:

Kf 

->b: Array[1] 

->0: Kf 

->b: Array[5] 

->0: Q 
    Xa: 41.0037 
    Ya: -104.05560000000003 
    __proto__: Q 
    1: Q 
    Xa: 44.9949 
    Ya: -104.0584 
    __proto__: Q 
    2: Q 
    Xa: 44.9998 
    Ya: -111.0539 
    __proto__: Q 
    3: Q 
    Xa: 40.9986 
    Ya: -111.04570000000001 
    __proto__: Q 
    4: Q 
    Xa: 41.0006 
    Ya: -104.05560000000003 

對不起,我不知道如何使這個看起來任何清潔劑。我想訪問latLng點的最後一個數組。或者我應該爲邊界添加另一個循環?

感謝

+0

根據屬性名稱(「Xa」,「Ya」等)判斷,您不應該通過'.latLngs' _property_嘗試訪問它們,而應該查找諸如'.getLatLngs()'(方法)。屬性名稱可能來自javascript縮小,並且可能會隨着新版本(甚至是小版本)完全更改。 – bububaba 2012-04-05 14:11:09

+0

這是一個很好的觀點。謝謝你救了我一個頭疼的問題 – JVD 2012-04-05 14:25:31

回答

0

我不認爲有一種方式來獲得在圖像地圖的多邊形邊界框(我相信這是你使用的是什麼)。

有沒有必要寫另一個循環;使用已經寫好的循環來計算邊界並同時建立多邊形。

+0

是的,這是我已經開始做的事情。對我來說似乎是多餘的,但我想在api-3中這樣做是爲了讓事情變得更小。什麼是防止邊界被分配爲循環中最後一個狀態的最佳建議? – JVD 2012-04-05 14:26:11

0

得到它以這種方式工作:

jQuery.getJSON("http://www.betafoot.com/wp-content/themes/twentyeleven/states.json", function(json) 
{ 
var j = []; 
var i = []; 
var $length = Object.keys(json).length; 
for (var j=1; j<$length+1; j++) 
{ 
var latlngbounds = new google.maps.LatLngBounds(); 
var pts = []; 
for (var i=0; i<json[j].points.length; i++) 
{ 
var id = json[j].stateid; 
pts[i] = new google.maps.LatLng(json[j].points[i][1], json[j].points[i][2]); 
latlngbounds.extend(pts[i]); 
}; 
var newpoly = new google.maps.Polygon({ 
paths: pts, 
strokeColor: "#FFFFFF", 
strokeOpacity: 0.8, 
strokeWeight: 2, 
fillColor: "#FF0000", 
fillOpacity: 0 
}); 
newpoly.setMap(map); 
newpoly.latlngbounds = latlngbounds; 
newpoly.objInfo = id; 
listenMarker(newpoly); 
}; 
}); 
function listenMarker(newpoly) 
{ 
google.maps.event.addListener(newpoly, 'click', function(event) 
{ 
map.fitBounds(newpoly.latlngbounds); 
}); 
}; 

,你可以看到我附加了的LatLngBounds到「newpoly」,然後從一個單獨的函數處理單擊操作訪問它們。如果有人認爲這是一個壞主意,請讓我知道。