Обновление/перезагрузка маркеров без перезагрузки google map

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

Большое спасибо,

    //Google map results
        var contentStrings = [];
        var infowindow = new google.maps.InfoWindow();
        var mapinited = false;
        var map;
        var myOptions = {
          zoom: 11,
          center: myLatlng,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        var currentinfobox;
        var myLatlng;
        var markersArray=[];
        var LatLngList = [];

$().ready(function() {

    //reinit search 
    if (window.location.hash) {
        submitForm(window.location.hash.replace('#',''));
    }
    else if (readCookie('sf')) {
            //submitForm(readCookie('sf'));
    }

    //init map
    $('#map_view').click(function() {
        if (mapinited) {
            return;
        } else {
            mapinited = true;
            initMap();
        }



    function initMap() {
            locate(["Ireland"],function(result) {
        map = new google.maps.Map(document.getElementById("search_map"), myOptions);
        myLatlng = new google.maps.LatLng(result.lat(),result.lng());

              var key =0;

               $.each(map_results, function(key, value){
        LatLngList[key] = new google.maps.LatLng(value.lat,value.long)
        contentStrings[key] =
                '<div id="ginfo_content" class="map-pop-up">'+
                  '<span class="content-top">&nbsp;</span>'+
                  '<div class="content-middle">'+
                    '<div class="map-filler">'+
                      '<a class="map-close" href="javascript:;" onclick="infowindow.close();" title="Close">x</a>'+
                      '<br class="clearfix">'+
                      '<div class="map-pop-up-left">'+
                        '<a href="profile.php?id='+ value.user_id +'"><div class="thumbnail"><img src="'+ value.image +'" width="64" height="64"></div></a>'+

                        '<a href="javascript:;" class="user-contact" onClick="to='+ value.user_id +';contact_showCaptcha();pop_up(\'pop-up-contact\');">Contact</a>'+

                      '</div>'+
                      '<div class="map-pop-up-right">'+
                        '<h2><a href="profile.php?id='+ value.user_id +'">'+ value.firstname +' '+value.lastname+',</a> '+ value.address +'</h2>'+
                        '<p>'+ stripslashes(value.about) +'</p>'+
                      '</div>'+
                      '<br class="clearfix">'+
                      '<div class="map-pop-up-footer"><a href="profile.php?id='+ value.user_id +'" class="view-profile">View Profile</a><span class="telephone">Telephone: '+ value.phone +'</span></div>'+
                    '</div>'+
                  '</div>'+
                  '<span class="content-bottom">&nbsp;</span>'+
                '</div>';
                 key++;
               });//end each

                map_results="";

        google.maps.event.addListener(infowindow, 'domready', function() {
            var infocontent = $('#ginfo_content').clone();
            var l = $('#ginfo_content').parent().parent().parent().addClass('original_popup').html('');
            $('.original_popup').append(infocontent).show();
            $('.original_popup').css('width','360px').css('height','230px').css('left','+=27px').css('top','+=65px');
        });

        var zoomChangeBoundsListener = google.maps.event.addListener(map, 'zoom_changed', function() {
            if (this.getZoom() > 14) // Change max/min zoom here
                this.setZoom(14);        
            google.maps.event.removeListener(zoomChangeBoundsListener);
        });
        var infoboxlistener = google.maps.event.addListener(map, 'zoom_changed', `enter code here`function() {
            infowindow.close();
        });
        loadMapInit(LatLngList,contentStrings);

    });
    }

    });

  });

Ответы

Ответ 1

Надеюсь, это ответ на то, о чем вы спрашиваете:

Когда вы создаете маркер, вы можете использовать параметр "map" для установки своей карты и отображения ее. Или, если вы хотите связать его с фильтром, вы можете игнорировать параметр карты и позже использовать map.setMap(map).

// To add the marker to the map, use the 'map' property
var marker = new google.maps.Marker({
    position: myLatlng,
    map: map,
    title:"Hello World!"
});

Если вы хотите "удалить" и "добавить" маркеры с событиями, вы можете использовать marker.setMap(null), чтобы удалить маркер и map.setMap(map), чтобы повторно добавить его.

var marker = new google.maps.Marker({
    position: myLatlng,
    title:"Hello World!"
});

// To add the marker to the map, call setMap();
marker.setMap(map);

// To remove the marker from the map
marker.setMap(null);

https://developers.google.com/maps/documentation/javascript/markers

Обновление: Поэтому, если вы хотите "перезагрузить" маркеры, вы можете пройти через массив активных маркеров, установить их карты в нуль, а затем reset их на карте.