首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌地图2 InfoWindows自动打开infoWindow,点击1 infoWindow后

谷歌地图2 InfoWindows自动打开infoWindow,点击1 infoWindow后
EN

Stack Overflow用户
提问于 2015-12-10 18:24:45
回答 1查看 100关注 0票数 0

我有一个自动打开的infoWindow。

我希望只有两个是自动打开的,而一个没有。效果就像在照片里一样。我的守则:

代码语言:javascript
复制
<script>
function initialize() {
    var openedInfoWindow = [];
    var locations = [
        ['Oddział', 52.846190, 17.723237, 3],
        ['Oddział', 52.812224, 17.201023, 2],
        ['Zakład Poligraficzny - Siedziba', 52.847942, 17.757889, 1]       
    ];
    var cityCircle;
    var map = new google.maps.Map(document.getElementById('map-canvas'), {
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        zoomControl: true,
          zoomControlOptions: {
            style: google.maps.ZoomControlStyle.SMALL
          }

    });

   var bounds = new google.maps.LatLngBounds();

    for (i = 0; i < locations.length; i++) {
        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(locations[i][1], locations[i][2], locations[i][3]),
            map: map,
            content: locations[i][0]
        });

        bounds.extend(marker.position); 

        var infowindow = new google.maps.InfoWindow();                  

        google.maps.event.addListener(marker, 'click', (function(marker, i, infowindow) {
           return function () {

                if(openedInfoWindow[i] != null){                            
                    openedInfoWindow[i].close(); 
                    openedInfoWindow[i] = null;
                }else{                   
                   infowindow.setContent(this.content); 
                   infowindow.open(map, this); 
                   openedInfoWindow[i] = infowindow;
                   google.maps.event.addListener(infowindow, 'closeclick', function() {
                      openedInfoWindow[i] = null;                        
                  });
                }   
            }               
        })(marker, i, infowindow));         

        google.maps.event.trigger(marker, 'click');
    }

    map.fitBounds(bounds);

    var listener = google.maps.event.addListener(map, "idle", function () {
        map.setZoom(9);
        google.maps.event.removeListener(listener);
    });
}
function loadScript() {
    var script = document.createElement('script');
    script.src = 'https://maps.googleapis.com/maps/api/js?key=AIzaSyADTnbl7e9y2o13cXkUFO8RZpXFJI-yzp4&' + 'callback=initialize';
    document.body.appendChild(script);
}

window.onload = loadScript;
</script>`

图1=现在

图2=所以它必须是

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-10 18:45:47

我建议您泛化它,在数组中添加一个成员以确定是否打开标记。

代码语言:javascript
复制
var locations = [
    // IW content, lat, lng, nowrap, open IW
    ['Oddział', 52.846190, 17.723237, 3, true],
    ['Oddział', 52.812224, 17.201023, 2, true],
    ['Zakład Poligraficzny - Siedziba', 52.847942, 17.757889, 1, false]       
];

然后这样做来打开信息:

代码语言:javascript
复制
if (locations[i][4]) {
  google.maps.event.trigger(marker, 'click');
}

概念小提琴的证明

代码片段:

代码语言:javascript
复制
function initialize() {
  var openedInfoWindow = [];
  var locations = [
    ['Oddział', 52.846190, 17.723237, 3, false],
    ['Oddział', 52.812224, 17.201023, 2, true],
    ['Zakład Poligraficzny - Siedziba', 52.847942, 17.757889, 1, true]
  ];
  var cityCircle;
  var map = new google.maps.Map(document.getElementById('map-canvas'), {
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    zoomControl: true,
    zoomControlOptions: {
      style: google.maps.ZoomControlStyle.SMALL
    }

  });

  var bounds = new google.maps.LatLngBounds();

  for (i = 0; i < locations.length; i++) {
    var marker = new google.maps.Marker({
      position: new google.maps.LatLng(locations[i][1], locations[i][2], locations[i][3]),
      map: map,
      content: locations[i][0]
    });

    bounds.extend(marker.position);

    var infowindow = new google.maps.InfoWindow();

    google.maps.event.addListener(marker, 'click', (function(marker, i, infowindow) {
      return function() {

        if (openedInfoWindow[i] != null) {
          openedInfoWindow[i].close();
          openedInfoWindow[i] = null;
        } else {
          infowindow.setContent(this.content);
          infowindow.open(map, this);
          openedInfoWindow[i] = infowindow;
          google.maps.event.addListener(infowindow, 'closeclick', function() {
            openedInfoWindow[i] = null;
          });
        }
      }
    })(marker, i, infowindow));

    if (locations[i][4]) {
      google.maps.event.trigger(marker, 'click');
    }
  }

  map.fitBounds(bounds);

  var listener = google.maps.event.addListener(map, "idle", function() {
    map.setZoom(9);
    google.maps.event.removeListener(listener);
  });
}

function loadScript() {
  var script = document.createElement('script');
  script.src = 'https://maps.googleapis.com/maps/api/js?' + 'callback=initialize';
  document.body.appendChild(script);
}

window.onload = loadScript;
代码语言:javascript
复制
html,
body,
#map-canvas {
  height: 100%;
  margin: 0;
  padding: 0;
}
代码语言:javascript
复制
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map-canvas"></div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34209085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档