Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:在循环中生成对象键,并将对象数组推送到每个循环中?_Javascript_Google Maps_Object_Hash_Key - Fatal编程技术网

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);