在Google地图上显示和隐藏标记

时间:2016-02-06 06:11:16

标签: javascript google-maps

我正在尝试为我的项目开发带有显示/隐藏标记功能的地图。但我没有正确的javascript知识。所以我现在正在谷歌上寻找一段时间。并且看到了许多与此相关的帖子。现在我正在使用post shows here

中的代码

在那张贴图中很好但是这篇文章有些不足。

  1. 它只显示标记,但在再次单击复选框时不会隐藏。

  2. 一次只显示一个类别

  3. CODE:

    <!DOCTYPE html>
    <html> 
    <head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title>Google Maps JavaScript API v3 Example: Marker Categories</title> 
    <script type="text/javascript" 
           src="http://maps.google.com/maps/api/js?sensor=false"></script>
    </head> 
    <body> 
     <div id="map" style="width: 400px; height: 300px;"></div> 
    
     <input type="checkbox" value="Show Group 1" onclick="displayMarkers(1);">
     <input type="checkbox" value="Show Group 2" onclick="displayMarkers(2);">
    
     <script type="text/javascript"> 
    
     var beaches = [
       ['Bondi Beach', -33.890542, 151.274856, 1,],
       ['Coogee Beach', -33.923036, 151.259052, 1],
       ['Cronulla Beach', -34.028249, 151.157507, 2],
       ['Manly Beach', -33.800101, 151.287478, 2],
       ['Maroubra Beach', -33.950198, 151.259302, 2]
     ];
    
     var map = new google.maps.Map(document.getElementById('map'), {
        zoom: 10,
        center: new google.maps.LatLng(-33.88, 151.28),
        mapTypeId: google.maps.MapTypeId.ROADMAP
     });
    
     var markers = [];
    
     var i, newMarker;
    
     for (i = 0; i < beaches.length; i++) {
       newMarker = new google.maps.Marker({
       position: new google.maps.LatLng(beaches[i][1], beaches[i][2]),
       map: map,
       title: beaches[i][0]
     });
    
     newMarker.category = beaches[i][3];
     newMarker.setVisible(false);
    
     markers.push(newMarker);
     }
    
      function displayMarkers(category) {
      var i;
    
     for (i = 0; i < markers.length; i++) {
       if (markers[i].category === category) {
         markers[i].setVisible(true);
       }
       else {
         markers[i].setVisible(false);
       }
     }
     }    
    
    </script> 
    </body> 
    </html>
    

1 个答案:

答案 0 :(得分:2)

Please check this code it should be working for you.

这里你需要添加jquery版本文件。    并只需检查复选框是否单击该处    时间你需要设置可见其他明智它变得虚假    检查我的代码    试试这个,

           <!DOCTYPE html>
       <html> 
       <head> 
       <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
       <title>Google Maps JavaScript API v3 Example: Marker Categories</title> 
           <script type="text/javascript" 
                   src="http://maps.google.com/maps/api/js?sensor=false"></script>
           <script src="http://code.jquery.com/jquery-2.2.0.min.js"></script>
       </head> 
       <body> 
        <div id="map" style="width: 400px; height: 300px;"></div> 

        <input type="checkbox" value="Show Group 1" onclick="displayMarkers(this,1);">
        <input type="checkbox" value="Show Group 2" onclick="displayMarkers(this, 2);">

        <script type="text/javascript"> 

        var beaches = [
          ['Bondi Beach', -33.890542, 151.274856, 1,],
          ['Coogee Beach', -33.923036, 151.259052, 1],
          ['Cronulla Beach', -34.028249, 151.157507, 2],
          ['Manly Beach', -33.800101, 151.287478, 2],
          ['Maroubra Beach', -33.950198, 151.259302, 2]
        ];

        var map = new google.maps.Map(document.getElementById('map'), {
           zoom: 10,
           center: new google.maps.LatLng(-33.88, 151.28),
           mapTypeId: google.maps.MapTypeId.ROADMAP
        });

        var markers = [];

        var i, newMarker;

        for (i = 0; i < beaches.length; i++) {
          newMarker = new google.maps.Marker({
          position: new google.maps.LatLng(beaches[i][1], beaches[i][2]),
          map: map,
          title: beaches[i][0]
        });

        newMarker.category = beaches[i][3];
        newMarker.setVisible(false);

        markers.push(newMarker);
        }

         function displayMarkers(obj,category) {
             var i;

             for (i = 0; i < markers.length; i++)
             {   
                     if (markers[i].category === category) {
                         if ($(obj).is(":checked")) {

                             markers[i].setVisible(true);
                         } else {
                             markers[i].setVisible(false);    
                         }
                     } 
                     else 
                     {
                         markers[i].setVisible(false);
                     }
                 }


         }    

       </script> 
       </body> 
       </html>