Удалить старый маркер добавить новый после вызова ajax метода каждую х секунду с OpenLayers - PullRequest
0 голосов
/ 29 июня 2018

Я хочу изменить положение маркера для каждых x секунд, используя метод ajax, но я столкнулся с 1 проблемой, потому что новый маркер добавляется в OpenLayers, но старый маркер не удаляется из OpenLayers. Я хочу сначала удалить старый маркер, а затем добавить новый маркер в обновленном месте.

  function ShowCurrentTime() {
      var obj = {};
      obj.device_id = $.trim($("\[id*=txtdevice_id\]").val());
      var marker;
      var mapOptions;
      $.ajax({
          url: "TRACKING.aspx/GetData",
          data: JSON.stringify(obj),
          type: "POST",
          dataType: "json",
          contentType: "application/json; charset=utf-8",
          success: function(data) {
              if (data.d != '') {
                  var lat = data.d\[1\];
                  var lng = data.d\[2\];
              }
              $.each(data, function(index, value) {
                  var zoom = 13;
                  var marker = new OpenLayers.Layer.Markers("Markers");
                  var lonLat = new OpenLayers.LonLat(lng, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
                  map.addLayer(marker);
                  map.removeLayer(marker);
                  marker.addMarker(new OpenLayers.Marker(lonLat));
                  map.setCenter(lonLat, zoom);
              });
          }
      });
  }

1 Ответ

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

Вы снова инициализируете маркер в ajax, сначала удалите, а затем инициализируете его

это должно работать

function ShowCurrentTime() {
      var obj = {};
      obj.device_id = $.trim($("\[id*=txtdevice_id\]").val());
      var marker = null;
      var mapOptions;
      $.ajax({
          url: "TRACKING.aspx/GetData",
          data: JSON.stringify(obj),
          type: "POST",
          dataType: "json",
          contentType: "application/json; charset=utf-8",
          success: function(data) {
              if (data.d != '') {
                  var lat = data.d\[1\];
                  var lng = data.d\[2\];
              }
              $.each(data, function(index, value) {
                  var zoom = 13;
                  if (marker != null) map.removeLayer(marker);
                  marker = new OpenLayers.Layer.Markers("Markers");
                  var lonLat = new OpenLayers.LonLat(lng, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
                  map.addLayer(marker);
                  marker.addMarker(new OpenLayers.Marker(lonLat));
                  map.setCenter(lonLat, zoom);
              });
          }
      });
  }
...