【问题标题】:Google Maps setVisible is not a function谷歌地图 setVisible 不是一个函数
【发布时间】:2011-07-26 20:31:57
【问题描述】:

这是我的markers[] 数组:

partnerMarkers = [
        // London
        { lat: 51.515482718, lng: -0.142903122, name: "London", content: "Our home town and international hub." },
// Dubai
        { lat: 25.2644444, lng: 55.3116667, name: "Middle East", content: "Dubai desc" }
];

我有这个函数,循环遍历标记数组(由其他地方的按钮触发):

function toggle_layer(markers) {
    for (var i=0; i<markers.length; i++) {
        markers[i].setVisible(false);
    }
}

我得到了markers[i].setVisible is not a function - 但是这很好用:

function toggle_layer(markers) {
    for (var i=0; i<markers.length; i++) {
        console.log(markers[i]);
    }
}

为什么 setVisible 在这种情况下不起作用?

【问题讨论】:

  • 标记是什么对象?
  • @NiklasRingdahl 这是一个数组。
  • 是的,但是数组是什么?我想它应该是Marker,你能提供设置标记对象的代码吗?

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


【解决方案1】:

kjy112 在现场,简化为插件直接到您的代码:

partnerMarkers = [
// London
    new google.maps.Marker(
    { position: new google.maps.LatLng(51.515482718, -0.142903122), 
    title: "London - Our home town and international hub." },
// Dubai
    new google.maps.Marker(
    { position: new google.maps.LatLng(25.2644444, 55.3116667), 
    title: "Middle East - Dubai desc" }
];

【讨论】:

    【解决方案2】:

    我没有在您的代码中看到 Marker 构造函数

    new google.maps.Marker
    

    【讨论】:

      【解决方案3】:

      这里是JSFiddle Demo:

      似乎您的标记只是对象而不是google.maps.Markers,因此它没有setVisible() 函数。您基本上想将 Object 中的数据转换为 google.maps.Marker 对象。我创建了一个全局数组 gooMarker 来保存标记。通过单击地图下方的链接,它将隐藏标记。以下是创建标记然后隐藏它们的方法:

      HTML 标记:

      <div id='parent'>
          <div id="map_canvas" style="width: 650px; height: 550px;"></div>
      </div>
      <div id='hidemark'>Click to hide markers</div>
      

      JavaScript + Google Map V3 API:

      var map;
      var gooMarker = [];
      
      var partnerMarkers = [
         {
          lat: 51.515482718,
          lng: -0.142903122,
          name: "London",
          content: "Our home town and international hub."},
          {
          lat: 25.2644444,
          lng: 55.3116667,
          name: "Middle East",
          content: "Dubai desc"}
      ];
      
      function initialize() {
      
          var london = new google.maps.LatLng(51.5, 0);
      
          var myOptions = {
              backgroundColor: '#FFFFF',
              zoom: 2,
              center: london,
              navigationControl: true,
              mapTypeId: google.maps.MapTypeId.ROADMAP
          };
      
          var map_canvas = document.getElementById("map_canvas");
      
          map = new google.maps.Map(map_canvas, myOptions);
      
          for (var i = 0; i < partnerMarkers.length; i++) {
              gooMarker.push(new google.maps.Marker({
                  position: new google.maps.LatLng(partnerMarkers[i].lat, partnerMarkers[i].lng),
                  map: map,
                  title: partnerMarkers[i].name
              }));
          }
      }
      
      function hideMarkers(){
          for(var i=0; i<gooMarker.length; i++){
              gooMarker[i].setVisible(false);
          }
      }
      
      document.getElementById('hidemark').onclick = hideMarkers;
      
      window.onload = initialize;
      

      【讨论】:

      • 谢谢 - 将标记推入 gooMarker 数组是关键。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      相关资源
      最近更新 更多