2012-03-25 18 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 
相关问题