Javascript:在循环中生成对象键,并将对象数组推送到每个循环中?
我正在谷歌地图上工作: 我有以下格式设置的标记数据:Javascript:在循环中生成对象键,并将对象数组推送到每个循环中?,javascript,google-maps,object,hash,key,Javascript,Google Maps,Object,Hash,Key,我正在谷歌地图上工作: 我有以下格式设置的标记数据: var nights = ['July1211', 'July1411']; var waypoint_data = { July1211: [ //Lat, long, j/a (juvenile/adult) [25.429363, -80.508326, j], [25.429332, -80.508216, j] ], July1411: [ [
var nights = ['July1211', 'July1411'];
var waypoint_data = {
July1211: [
//Lat, long, j/a (juvenile/adult)
[25.429363, -80.508326, j],
[25.429332, -80.508216, j]
],
July1411: [
[25.42936, -80.51023, j],
[25.42936, -80.51036, j]
]
};
构建点的函数如下所示:
function buildPoints() {
//var marker_container = new Object;
for ( i = 0; i < nights.length ; i++ ) {
//Loop for each data point that night
for ( h = 0; h < waypoint_data[nights[i]].length; h++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(waypoint_data[nights[i]][h][0], waypoint_data[nights[i]][h][1]),
icon: waypoint_data[nights[i]][h][2],
shape: pointshape,
map: map
});
//Push waypoints into date-specific object key
//marker_container[nights[i]].push(marker);
}
}
}
函数构建点(){
//var marker_container=新对象;
对于(i=0;i
我想将每个日期(夜晚[I])的标记推入不同的对象键,以便隐藏/显示特定夜晚的标记。我试着用我注释掉的两个marker_容器行来实现这一点,但它们只是打断了我的循环,在Firebug中,我得到了一个关于marker_容器[nights[I]]未定义的错误。nights[i]是一个字符串,所以我认为这个语法可以工作。非常感谢您提供的任何提示,我非常乐意听取您对其他更好的编码方法的建议。您不能在对象上使用
推送,只能在数组上使用。我想这就是你想要做的:
function buildPoints() {
var marker_container = new Object();
for ( i = 0; i < nights.length ; i++ ) {
marker_container[nights[i]] = new Array();
//Loop for each data point that night
for ( h = 0; h < waypoint_data[nights[i]].length; h++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(waypoint_data[nights[i]][h][0], waypoint_data[nights[i]][h][1]),
icon: waypoint_data[nights[i]][h][2],
shape: pointshape,
map: map
});
//Push waypoints into date-specific object key
marker_container[nights[i]].push(marker);
}
}
}
函数构建点(){
var marker_container=新对象();
对于(i=0;i
如果您知道将有多少个标记(比如10个),请设置标记容器,使对象的每个元素本身成为长度为2的对象:
marker_container= new Object(10);
for (i=0; i<marker_container.length; i++){
marker_container[i]=new Object(2);
}
要显示和隐藏标记时,请执行以下操作:
//display
marker_container['nightX'].setMap(map);
//hide
marker_container['nightX'].setMap(null);
marker\u container
不应该是数组,因为他使用字符串作为键(nights[i]
)啊,是的,这正是我想要实现的!非常感谢。
//display
marker_container['nightX'].setMap(map);
//hide
marker_container['nightX'].setMap(null);