我使用KineticJS在HTML5畫布上創建交互式地圖,問題在於我的地圖數據位於geoJSON中,所以我有多邊形座標而不是多邊形點。如何使用帶有geoJSON座標而非點的KineticJS多邊形對象?
這是我如何與多邊形點(according to this tutorial)
//Javascript object with map data
var myMap = {
'Russia': {
points: [44,1,397,1,518,2,518,151,515,..............6,43,4,43,4]
},
'Azerbaijan': {
points: [198, 242, 201, 245, 203,..............197, 242]
},
'UAE': {
points: [224,406,225,410,...............225,407]
}
};
//Function to return map data
function getData() {
return myMap;
}
然後使用KineticJS多邊形對象上繪製HTML5畫布地圖上做到這一點。
//store map data in a variable
var areas = getData();
//Loop through the map
for (var key in areas) {
(function() {
var k = key;
var area = areas[key];
var points = area.points;
var shape = new Kinetic.Polygon({
points: points,
fill: '#fff',
stroke: '#555',
strokeWidth: .5,
alpha: 0.1
});
}());
}
有沒有人知道我可以如何實現與geoJSON座標相同?以下是geoJSON的示例。座標嵌套在幾何對象內。
{
"type": "FeatureCollection",
"features": [{ "type": "Feature", "id": 0,
"properties": { "OBJECTID_1": 29, "OBJECTID": 29, "COUNTY_NAM": "BARINGO", "COUNTY_COD": 30, "Shape_Leng": 5.81571392065, "Shape_Area": 0.88451236881 },
"geometry": { "type": "Polygon", "coordinates": [ [ [ 36.028686523000033, 1.276123047000056 ], [ 36.036499023000033, 1.263916016000053 ], [ 36.039306641000053, 1.259887695000032 ],............[ 36.028686523000033, 1.276123047000056 ] ] ] } }
]
}
如果我沒有記錯,KineticJS兩個最新版本支持數組的數組給予的點。但是你應該做的是創建一個循環,通過座標對象進行解析並順序抓取所有的值,因爲這些都是KineticJS的需要。 – SoluableNonagon 2013-02-15 14:25:56