2016-01-19 3 views
-1

У меня есть сценарий, который создает создателей на карте из некоторых настраиваемых полей. Прежде чем я вставил ajax на мою страницу, маркеры были сброшены, когда я менял страницу. Теперь, после того, как я вставил ajax, мне нужно сбросить свои маркеры и воссоздать их после запуска события. Как сбросить мои метки? Здесь это мой код для google map. Благодаря !Удалить маркеры google

(function($) { 
    'use strict'; 
    var marker = []; 
    function handleHouse(house, map, geocoder, infowindow) { 
     geocoder.geocode({'address': house.address}, function(results, status) { 
      if (status == google.maps.GeocoderStatus.OK) { 
       var marker = new google.maps.Marker({ 
        map: map, 
        position: results[0].geometry.location 
       }); 

       google.maps.event.addListener(marker, 'click', function() { 
        infowindow.setContent(house.title + house.desc); 
        infowindow.open(map, marker); 
       }); 
      } 
     }); 
    } 

    function handleHouses(houses, map, geocoder, infowindow) { 
     for (var id in houses) { 
      if (houses.hasOwnProperty(id)) { 
       handleHouse(houses[id], map, geocoder, infowindow); 
      } 
     } 
    } 

    $(function() { 
     if (typeof HOUSE_DATA === 'undefined') { 
      return; 
     } 

     var map = new google.maps.Map(document.getElementById('map'), { 
      zoom: 11, 
      center: new google.maps.LatLng(36.5819074, -4.8703777,11.25), 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }); 

     var infowindow = new google.maps.InfoWindow(); 
     var geocoder = new google.maps.Geocoder(); 

     handleHouses(HOUSE_DATA, map, geocoder, infowindow); 

     $('#houses-result').on('houses-refresh', function() { 
      alert ('markers reseted'); 
      handleHouses(HOUSE_DATA, map, geocoder, infowindow); 
     }); 
    }); 
}(jQuery)); 

ответ

1

Вы должны хранить refferences на свои маркеры в массиве, таким образом, вы можете перебрать массив и манипулировать с маркерами. Here - пример, показывающий, как скрыть все маркеры на карте. Изменяя этот пример, вы должны иметь возможность изменять маркеры любым способом.

Так оно и должно выглядеть следующим образом:

var marker = []; 
var markers = []; 
function handleHouse(house, map, geocoder, infowindow) { 
    geocoder.geocode({'address': house.address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      var marker = new google.maps.Marker({ 
       map: map, 
       position: results[0].geometry.location 
      }); 
      markers.push(marker); 
      google.maps.event.addListener(marker, 'click', function() { 
       infowindow.setContent(house.title + house.desc); 
       infowindow.open(map, marker); 
      }); 
     } 
    }); 
} 

И тогда отдых:

$('#houses-result').on('houses-refresh', function() { 
    alert ('markers reseted'); 
    for (var i = 0; i < markers.length; i++) { 
     markers[i].setMap(null); 
    } 
    markers = []; 
    handleHouses(HOUSE_DATA, map, geocoder, infowindow); 
}); 
+0

Спасибо вам большое! –

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