无法在Google API 3中隐藏二维标记数组

时间:2015-06-12 15:12:50

标签: javascript arrays google-maps google-maps-api-3

C-M-`

我无法使用setMap隐藏标记, 控制台出错 请帮忙!

提前致谢



  My marker  is at the end   




1 个答案:

答案 0 :(得分:0)

您无法根据数组中的元素隐藏标记。他们没有.setMap方法。标记需要是google.maps.Marker个对象。创建标记时,请在另一个数组中保留对它们的引用(例如" gmarkers"),然后使用它来隐藏/显示它们。

proof of concept fiddle(使用您的数据)



var markers = [
  ['office', 'Albania', 42.158410, 19.940845],
  ['production plant', 'Albania', 40.198905, 20.039722],
  ['R&D service', 'Albania', 41.090835, 19.545337],
  ['office', 'Algeria', 28.164666, 3.160335]
];
var map;
var gmarkers = [];

function toggleMarker() {
  var markerId = parseInt(document.getElementById('markerid').value);
  if (gmarkers[markerId].getMap() == null) {
    gmarkers[markerId].setMap(map);
  } else {
    gmarkers[markerId].setMap(null);
  }
}

function initialize() {
  map = new google.maps.Map(document.getElementById('map'), {
    zoom: 10,
    center: new google.maps.LatLng(-33.92, 151.25),
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });

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

  var marker, i;
  var bounds = new google.maps.LatLngBounds();

  for (i = 0; i < markers.length; i++) {
    marker = new google.maps.Marker({
      position: new google.maps.LatLng(markers[i][2], markers[i][3]),
      map: map
    });
    bounds.extend(marker.getPosition());
    google.maps.event.addListener(marker, 'click', (function(marker, i) {
      return function() {
        infowindow.setContent(markers[i][0]);
        infowindow.open(map, marker);
      }
    })(marker, i));
    gmarkers.push(marker);
  }
  map.fitBounds(bounds);
}
google.maps.event.addDomListener(window, 'load', initialize);
&#13;
html,
body,
#map {
  height: 100%;
  margin: 0px;
  padding: 0px
}
&#13;
<script src="https://maps.googleapis.com/maps/api/js"></script>
<input type="text" id="markerid" value="2" />
<input type="button" onclick="toggleMarker()" value="toggle" />
<div id="map"></div>
&#13;
&#13;
&#13;