【问题标题】:Hide particular marker google maps api隐藏特定标记 google maps api
【发布时间】:2016-07-22 06:23:41
【问题描述】:

使用我在 stackoverflow 上找到的 google maps api 的当前代码,我需要隐藏除单击之外的所有标记,我该怎么做?

甚至不知道如何处理它?

我认为这与 JS 闭包有关,但不是这方面的专家。

<!DOCTYPE html>
    <html> 
    <head> 
      <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
      <title>Google Maps Multiple Markers</title> 
      <script src="http://maps.google.com/maps/api/js?sensor=false" 
              type="text/javascript"></script>
    </head> 
    <body>
      
      <div id="map" style="width: 500px; height: 400px;"></div>
    
      <script type="text/javascript">
        var locations = [
          ['Bondi Beach', -33.890542, 151.274856, 4],
          ['Coogee Beach', -33.923036, 151.259052, 5],
          ['Cronulla Beach', -34.028249, 151.157507, 3],
          ['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
          ['Maroubra Beach', -33.950198, 151.259302, 1]
        ];
    
        var 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;
    
        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
        });
    
          google.maps.event.addListener(marker, 'click', (function(marker, i) {
            return function() {
              infowindow.setContent(locations[i][0]);
              infowindow.open(map, marker);

              //hide marker clicked
              marker.setVisible(false);


            }
          })(marker, i));
        }

        function hide_some_markers() {
            alert("what to do here?");
        }

      </script>


    </body>
    </html>

编辑:当前在单击标记时,它会隐藏被单击的标记, 我需要做的是隐藏所有标记,除了被点击的标记,当我点击地图时,它应该恢复所有隐藏的标记。

【问题讨论】:

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


    【解决方案1】:

    如果你想隐藏标记,你可以调用:

    marker.setVisible(false);
    

    您也可以使用以下方法删除它们:

    marker.setMap(null);
    

    在您的循环中,您没有跟踪您创建的标记。您可以在创建时将它们推送到一个数组中,然后单击按钮可以遍历并隐藏除所需的所有内容之外的所有内容。

    var allMarkers = [];
    //for loop
    //your code
    allMarkers.push(marker);
    //end loop
    

    然后在您的隐藏函数中,只需遍历所有标记并隐藏除所需标记之外的所有标记。喜欢allMarkers[index].setVisible(false);

    【讨论】:

    • 是的 marker.setvisible 但是当 allMarkers.push(marker); allMarkers 出来是空的。你能给出实际的工作示例吗?我更新了我的问题。
    • 你在哪里声明了 allMarkers?它在你的隐藏 fn 范围内吗?我将尝试创建一个小提琴并在一段时间内发布。平均时间你可以分享你尝试过的代码。
    猜你喜欢
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 2015-09-10
    • 2019-06-04
    • 1970-01-01
    相关资源
    最近更新 更多