-1

Используя текущий код для google-карт api, найденных в 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>

EDIT: В настоящее время щелкать маркер скрывает маркер, который был щелкнул, , что мне нужно сделать, это скрыть все маркеры, за исключением той, которая была нажата, когда я нажимаю карту он должен восстановить все скрытые маркеры.

ответ

-1

Если вы хотите, чтобы скрыть маркеры вы можете просто позвонить:

marker.setVisible(false); 

Вы также можете удалить их с помощью:

marker.setMap(null); 

в цикле вы не отслеживание созданных вами маркеры. Вы можете нажимать их на массив при создании и при нажатии кнопки вы можете перебирать и скрывать все, кроме желаемого.

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

Затем в вашей функции hide просто пройдите по всем маркерам и скройте все, кроме желаемого. подобный allMarkers[index].setVisible(false);

+0

есть маркер.setvisible works но если всеMarkers.push (маркер); allMarkers выходит пустым. Можете ли вы привести фактический рабочий пример, я обновил свой вопрос. –

+0

где вы объявили allMarkers? это в области вашей скрытности fn? Я попытаюсь создать скрипку и пост через некоторое время. Среднее время вы можете поделиться кодом, который вы пробовали. – Raghuveer

Смежные вопросы