Восстановление удаленных маркеров на картах Google

0

У меня есть карта с несколькими маркерами, и я почти осуществил вид фильтра на карте. Когда я нажимаю на маркеры, маркеры исчезают, и кнопка отображается вверху карты для восстановления маркеров - это то, что не работает. Я попытался воссоздать маркеры, когда пользователь нажимает кнопку, но, похоже, не работает. Есть идеи? Вот мой код:

 function getCrimeByLocation(lat, lng, date){
if(date == null){
    var d = new Date();
    date = d.getFullYear() + '-' + (d.getMonth()+1);
    //hardcoding as of now as jan 2014 data is not there, remove when req
    date = "2013-02";
}
$.getJSON( "http://data.police.uk/api/crimes-street/all-crime?lat="+lat+"&lng="+lng+"&date="+date, function( data ) {
    while(markers.length > 0){
        markers.pop().setMap(null);
    }

    //marking the requested position
    addMyPositionMarker(lat, lng);
    //loop through the data
    $.each(data, function( key, val ) {
        //var myLatlng = new google.maps.LatLng(val.location.latitude, val.location.longitude);
        //create the markers on the map
        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(val.location.latitude, val.location.longitude),
            map: map,
            animation: google.maps.Animation.DROP,
            draggable: false,
            title: val.location.street.name
        });
        markers.push(marker); // saving markers for reference, so that we can remove them later;
        //'click' event to delete the markers from the map
        google.maps.event.addListener(marker, 'click', function(){
            for(var i = 0; i < markers.length; i++){
                markers[i].setMap(null);
            }
            markers.length = 0;
            //Once the markers are deleted, the button shows up
            antisocial.show();
        });
    });

    var antisocial = $('<button>Anti-social behaviour</button>').hide().click(function(){
        //Here I tried to restore the markers, but it doesn't work
        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(val.location.latitude, val.location.longitude),
            map: map,
            animation: google.maps.Animation.DROP,
            draggable: false,
            title: val.location.street.name 
        });
        markers.push(marker);
        //hide the button once it clicked
        antisocial.hide();
    });
    $('#map-canvas').before(antisocial);

    if(markers.length > 0){
        fitBoundsMap();
    }
});
}

Благодарю.

Теги:
google-maps
google-maps-api-3

1 ответ

1
Лучший ответ

Я думаю, вам просто нужно установить карту на нуль, чтобы скрыть маркеры и вернуть карту обратно на исходную карту, чтобы показать их снова.

  • 0
    Спасибо за ваш ответ. Я установил карту в null, когда я создал событие click на маркеры, и это прекрасно работает. Также кнопка показывает вверх. Чтобы отобразить их снова, я попытался воссоздать маркеры, а также setMap(markers) , но ни один из них не работает.
  • 0
    Нет необходимости их воссоздавать, они все еще должны существовать, просто верните их карту обратно, как это было.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню