2012-03-25 68 views
1

這是一個來自Google Maps API開發人員指南的代碼示例。我對JavaScript沒有超級經驗,但我從未見過這種語法。迷惑我的部分是第一部分,他們說「var citymap = {};」然後看似繼續聲明一堆城市地圖鍵。然後,他們會說「for(var city in citymap){」等。這是一個可行的JavaScript地圖製作方法嗎?

這是唯一的/在JavaScript中製作地圖的正確方法嗎?

// Create an object containing LatLng, population. 
var citymap = {}; 
citymap['chicago'] = { 
    center: new google.maps.LatLng(41.878113, -87.629798), 
    population: 2842518 
}; 
citymap['newyork'] = { 
    center: new google.maps.LatLng(40.714352, -74.005973), 
    population: 8143197 
}; 
citymap['losangeles'] = { 
    center: new google.maps.LatLng(34.052234, -118.243684), 
    population: 3844829 
} 
var cityCircle; 

function initialize() { 
    var mapOptions = { 
    zoom: 4, 
    center: new google.maps.LatLng(37.09024, -95.712891), 
    mapTypeId: google.maps.MapTypeId.TERRAIN 
    }; 

    var map = new google.maps.Map(document.getElementById("map_canvas"), 
     mapOptions); 

    for (var city in citymap) { 
    // Construct the circle for each value in citymap. We scale population by 20. 
    var populationOptions = { 
     strokeColor: "#FF0000", 
     strokeOpacity: 0.8, 
     strokeWeight: 2, 
     fillColor: "#FF0000", 
     fillOpacity: 0.35, 
     map: map, 
     center: citymap[city].center, 
     radius: citymap[city].population/20 
    }; 
    cityCircle = new google.maps.Circle(populationOptions); 
    } 
} 

回答

2

讓我試着解釋每個代碼有點...

var citymap = {}; 

創建一個空的對象...以下增加值對象:

citymap['chicago'] = { 
    center: new google.maps.LatLng(41.878113, -87.629798), 
    population: 2842518 
}; 

這添加一個新密鑰('chicago')並添加一些屬性(center和​​),但是該對象的循環是

for (var city in citymap) { 

此聲明循環了citymap對象,將city分配給每個對象的關鍵字。要訪問屬性的代碼使用

citymap[city].center 
citymap[city].population 

它的創建和循環,並具有多個值對象的最佳方式。有一些really good documentation here與JavaScript中的Objects一起使用

+0

很好地解釋了。這是我懷疑的。謝謝。 – Aerovistae 2012-03-25 20:01:12

0

cityMap中表達[ '洛杉磯']的簡寫是一樣的citymap.longeles。你必須小心,如果你從哈希映射中刪除,因爲你可以寫刪除citymap ['losangeles'],但是你不能寫刪除citymap.longeles。當你在字符串變量中有一個鍵時,表達式citymap ['losangeles']也是可用的:

var city = 'losangeles'; 
var x = citymap[city]; //good 
var x = citymap.city; //error 
相關問題