2016-07-22 21 views
-1

Mit dem aktuellen Code für Google Maps API, die ich auf Stackoverflow gefunden habe, muss ich alle Marker ausblenden, bis auf einen geklickt, wie kann ich es tun?Ausblenden bestimmter Marker google maps api

Nicht einmal sicher, wie Sie es angehen?

Ich denke, es hat mit JS-Schließungen zu tun, aber kein Experte dafür.

<!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>

EDIT: Zur Zeit Marker auf, klicken sie versteckt Marker, der angeklickt wurde, , was ich tun müssen, ist alle Marker mit einer Ausnahme zu verstecken, auf den geklickt wurde, wenn ich die Karte klicken sollte es wiederherstellen alle versteckten Marker.

Antwort

-1

Wenn Sie die Markierungen verbergen möchten, können Sie einfach das nennen:

marker.setVisible(false); 

Sie können sie auch entfernen, indem Sie mit:

marker.setMap(null); 

In der Schleife halten Sie nicht den Überblick über Ihre erstellt Markierungen. Sie können sie während der Erstellung in ein Array verschieben und beim Klicken auf die Schaltfläche können Sie alle Elemente außer dem gewünschten durchgehen und ausblenden.

Dann iterieren Sie in Ihrer Verstecken-Funktion nur alle Markierungen und verstecken Sie alle außer der gewünschten. wie allMarkers[index].setVisible(false);

+0

ja marker.setvisible funktioniert aber wenn allMarkers.push (marker); AllMarkers kommt leer aus. Kannst du tatsächlich arbeiten Beispiel ich habe meine Frage aktualisiert. –

+0

wo hast du die allMarkers deklariert? ist es im bereich deiner häute fn? Ich werde versuchen, in einiger Zeit eine Geige zu schaffen und zu veröffentlichen. Durchschnittliche Zeit, die Sie den Code teilen können, den Sie ausprobiert haben. – Raghuveer