Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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
Jquery 在Google地图阵列中显示某些信息窗口_Jquery_Arrays_Google Maps_Google Maps Api 3 - Fatal编程技术网

Jquery 在Google地图阵列中显示某些信息窗口

Jquery 在Google地图阵列中显示某些信息窗口,jquery,arrays,google-maps,google-maps-api-3,Jquery,Arrays,Google Maps,Google Maps Api 3,我希望能够在页面加载时显示某些信息窗口。因此,用户不必将鼠标悬停在它们上面,它们已经被加载了——然而,我只想在数组中的4个标记中的2个上执行此操作 var marker, i; var markers = []; var locations = [ ['<div style="width: 170px;">Title1</div>', 50.794785, -1.116947, image], ['<div s

我希望能够在页面加载时显示某些信息窗口。因此,用户不必将鼠标悬停在它们上面,它们已经被加载了——然而,我只想在数组中的4个标记中的2个上执行此操作

    var marker, i;
    var markers = [];
    var locations = [
        ['<div style="width: 170px;">Title1</div>', 50.794785, -1.116947, image],
        ['<div style="width: 190px;">Title2</div>', 50.797, -1.109, image],
        ['<div style="width: 120px;">Title3', 50.796928, -1.107119, '../images/map-pointer.png'],
        ['<div style="width: 150px;">Title4</div>', 50.794703, -1.117880, '../images/map-pointer.png']
    ];
for (i = 0; i < locations.length; i++) {  
                marker = new google.maps.Marker({
                    position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
                    map: map,
                    icon: locations[i][3],
                    //visible: false,
                    zIndex: 10
                }); 

                /* Open marker on mouseover */
                google.maps.event.addListener(marker, 'mouseover', (function(marker, i) {
                return function() {
                    infowindow.setContent(locations[i][0]);
                    infowindow.open(map, marker);
                }
                })(marker, i));
                markers.push(marker); // save all markers


            }               
            /* Change markers on zoom */
            google.maps.event.addListener(map, 'zoom_changed', function() {
                var zoom = map.getZoom();
                // iterate over markers and call setVisible
                for (i = 0; i < locations.length; i++) {
                    markers[i].setVisible(zoom >= 15);
                }

                if (map.getZoom()>=15) {
                    flightPath.setMap(map)
                } else {
                    flightPath.setMap(null)
                }
            });
这对我不起作用,但我走对了吗?这是怎么做的

编辑

所以它部分起作用了

这就是我的for循环当前的样子:

for (i = 0; i < locations.length; i++) {  
            marker = new google.maps.Marker({
                position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
                map: map,
                icon: locations[i][3],
                //visible: false,
                zIndex: 10
            }); 

            /* Check to see if it should open */
            if ((locations[i][4]) == 'true') {
                infowindow.setContent(locations[i][0]);
                infowindow.open(map, marker);
            }

            /* Open marker on mouseover */
            google.maps.event.addListener(marker, 'mouseover', (function(marker, i) {
                return function() {
                    infowindow.setContent(locations[i][0]);
                    infowindow.open(map, marker);
                }
            })(marker, i));
            markers.push(marker); // save all markers


        }
(i=0;i marker=新的google.maps.marker({ 位置:新的google.maps.LatLng(位置[i][1],位置[i][2]), 地图:地图, 图标:地点[i][3], //可见:假, zIndex:10 }); /*检查它是否应该打开*/ 如果((位置[i][4])=='true'){ infowindow.setContent(位置[i][0]); 信息窗口。打开(地图、标记); } /*鼠标盖上的打开标记*/ google.maps.event.addListener(标记'mouseover',(函数(标记,i){ 返回函数(){ infowindow.setContent(位置[i][0]); 信息窗口。打开(地图、标记); } })(marker,i)); markers.push(marker);//保存所有标记 } 不过,这只是我的一个“真的”——我假设这是因为我需要多个infoWindow实例,如下面的人所说

编辑:成功完成-感兴趣的人请参见下面

应该是

if ((locations[i][4]) == true)
更多问题:

  • 当前infowindow没有任何内容(内容设置为onmouseover)。在标记上触发鼠标悬停,而不是以编程方式打开信息窗口:
如果((位置[i][4])){ google.maps.event.trigger(标记,'mouseover'); }
  • 似乎您使用的是单个
    google.maps.InfoWindow
    -实例,如果您希望同时打开多个InfoWindow,则必须使用多个实例

    • 成功做到了!有兴趣的人士:

      var infowindow = new google.maps.InfoWindow();
      var marker, i;
      var markers = [];
      var locations = [
          ['<div style="width: 170px;">Title1</div>', 50.794785, -1.116947, image,'true'],
          ['<div style="width: 190px;">Title2</div>', 50.797, -1.109, image,'true'],
          ['<div style="width: 120px;">Title3', 50.796928, -1.107119, '../images/map-pointer.png','false'],
          ['<div style="width: 150px;">Title4</div>', 50.794703, -1.117880, '../images/map-pointer.png','false']
      ];
      
      for (i = 0; i < locations.length; i++) {  
          marker = new google.maps.Marker({
          position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
          map: map,
          icon: locations[i][3],
          //visible: false,
          zIndex: 10
          }); 
      
          /*  Open specific markers on page load */
          var infocontent = locations[i][0];        
      
          if ((locations[i][4]) == 'true') {
          var infwin = new google.maps.InfoWindow({content: infocontent});
          infwin.open(map, marker);
          }
      
          /* Open marker on mouseover */
          google.maps.event.addListener(marker, 'mouseover', (function(marker, i) {
          return function() {
              infowindow.setContent(locations[i][0]);
              infowindow.open(map, marker);
          }
          })(marker, i));
          markers.push(marker); // save all markers
      
      }
      
      var infowindow=new google.maps.infowindow();
      var标记,i;
      var标记=[];
      变量位置=[
      [Title1',50.794785,-1.116947,图像,'true'],
      [Title2',50.797,-1.109,图像,'true'],
      [Title3',50.796928,-1.107119,../images/map pointer.png','false'],
      ['Title4',50.794703,-1.117880,../images/map pointer.png','false']
      ];
      对于(i=0;i
      什么是“标记[i][4]”?这看起来不对。需要是你的位置数组。谢谢。我如何制作多个信息窗口?会是var infowindow,i=new google.maps.infowindow()?
      if ((locations[i][4]) == true)
      
      if ((locations[i][4])) { google.maps.event.trigger(marker,'mouseover'); }
      var infowindow = new google.maps.InfoWindow();
      var marker, i;
      var markers = [];
      var locations = [
          ['<div style="width: 170px;">Title1</div>', 50.794785, -1.116947, image,'true'],
          ['<div style="width: 190px;">Title2</div>', 50.797, -1.109, image,'true'],
          ['<div style="width: 120px;">Title3', 50.796928, -1.107119, '../images/map-pointer.png','false'],
          ['<div style="width: 150px;">Title4</div>', 50.794703, -1.117880, '../images/map-pointer.png','false']
      ];
      
      for (i = 0; i < locations.length; i++) {  
          marker = new google.maps.Marker({
          position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
          map: map,
          icon: locations[i][3],
          //visible: false,
          zIndex: 10
          }); 
      
          /*  Open specific markers on page load */
          var infocontent = locations[i][0];        
      
          if ((locations[i][4]) == 'true') {
          var infwin = new google.maps.InfoWindow({content: infocontent});
          infwin.open(map, marker);
          }
      
          /* Open marker on mouseover */
          google.maps.event.addListener(marker, 'mouseover', (function(marker, i) {
          return function() {
              infowindow.setContent(locations[i][0]);
              infowindow.open(map, marker);
          }
          })(marker, i));
          markers.push(marker); // save all markers
      
      }