setMap (null) не работает - PullRequest
0 голосов
/ 10 июня 2018

я пытаюсь удалить маркер с карты с помощью ajax-запроса.

ajax-запрос выглядит следующим образом.

    $(document).on('click','.deletebtn',function(){

        var theid =$(this).parent().attr("id");
          var obj = {
              id:theid
          }
          $.ajax({
              url:"http://localhost:3000/singleMarker",
              method:"post",
              contentType:"application/json",
              data:JSON.stringify(obj),
              dataType:"JSON",
              processData: true,
              success:function(responseData){
                  clearMarker(responseData);
              }
          });

    });

на ответ будет получен единственный объект {id: id, {lat: xxx, lng: yyy}}

затем я превращаю последние данные в маркер obj:

    var clearMarker = function(responseData){
    //clearAll Markers from Map
    var markers =[];
    var temp ={};
    var marker;
    for(var key in responseData){
        //create markers with latlng objs
        temp ={lat:responseData[key].pos.lat,lng:responseData[key].pos.lng};
        marker = new google.maps.Marker({
            position:temp,
            map:meineMap
        });
        markers.push(marker);
    }
    setMapOnAll(null,markers);
}

, затем setMapOnAll с картой null должен удалить все маркеры с карты, но это не так.Зачем?

function setMapOnAll(map,markers) {
  for (var i = 0; i < markers.length; i++) {
    markers[i].setMap(null);
    //markers[i].setVisible(false);

  }
}

1 Ответ

0 голосов
/ 10 июня 2018

Если у вас есть только один маркер, нет необходимости поддерживать массив маркеров (или вызывать setMapOnAll), переместите объявление marker из функции clearMarker, если маркер существует, установитеего map свойство равно null, в противном случае это первый маркер, просто создайте его.

var marker;
var clearMarker = function(responseData){
    //clearAll Markers from Map
    var temp ={};

    for(var key in responseData){
        //create markers with latlng objs
        temp ={lat:responseData[key].pos.lat,lng:responseData[key].pos.lng};
        if (marker && marker.setMap) marker.setMap(null);
        marker = new google.maps.Marker({
            position:temp,
            map:meineMap
        });
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...