在传单地图中更新标记之前删除以前的标记?

D_P

在这里,我试图在成功的 ajax 请求后更新地图上的标记,但在添加新标记之前我无法删除以前添加的标记。我怎么能在这里做?

   $(document).ready(function(){
    var element = document.getElementById('map');
    element.style = 'height:600px;';
    map = L.map(element);
    L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
        attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
    }).addTo(map);
    var target = L.latLng('33.812358', '79.324126');
    
    var locations = [
      ["1", lat, lng}],
    ];
    for (var i = 0; i < locations.length; i++) {
      marker = new L.marker([locations[i][1], locations[i][2]])
        .bindPopup(locations[i][0])
        .addTo(map);
    }
    map.setView(target, 14);
    L.marker(target).addTo(map);
    
     $('.click').click(function(e) {
            url=$(this).attr('url');
            $.ajax({
            url: url,
            type: 'GET',
            success: function (data) {
              var locations = [["1", 29.72184, 90.303634],];
                for (var i = 0; i < locations.length; i++) {
                  marker = new L.marker([locations[i][1], locations[i][2]])
                    .bindPopup(locations[i][0])
                    .addTo(map);
                }
                map.setView(target, 14);
                var markers = L.markerClusterGroup();
                markers.clearLayers(map._layers);          
                L.marker(target).addTo(map);
Roko C. Buljan

这是一个示例,它存储数组的Marker每个位置对象locations

此外,创建两个函数,drawLocationsToMapremoveLocationsFromMap.

const Map = L.map('map');

L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
  maxZoom: 18,
  attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, ' +
    'Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
  id: 'mapbox/streets-v11',
  tileSize: 512,
  zoomOffset: -1
}).addTo(Map);


let locations = [{
    lat: 45.8150,
    lng: 15.9819,
    content: "<b>Zagreb</b><br>Description..."
  },
  {
    lat: 43.5081,
    lng: 16.4402,
    content: "<b>Split</b><br>Some descrip..."
  },
  {
    lat: 42.6507,
    lng: 18.0944,
    content: "<b>Dubrovnik</b><br>Descript..."
  },
];

const drawLocationsToMap = () => {
  locations.forEach(loc => {
    if (!loc.Marker) {
      loc.Marker = new L.marker([loc.lat, loc.lng]);
      loc.Marker.bindPopup(loc.content);
    }
    loc.Marker.addTo(Map);
  });
};

const removeLocationsFromMap = () => {
  locations.forEach(loc => {
    Map.removeLayer(loc.Marker)
  });
};

Map.setView([locations[0].lat, locations[0].lng], 5);

// Draw current locations to map
drawLocationsToMap();

// Add new marker
// (i.e: on click or AJAX success. I'll use timeout for demo)
setTimeout(() => {

  // Remove all locations from map!
  removeLocationsFromMap(); 
  
  // Update the locations array with a single location
  locations = [{
    lat: 44.8666,
    lng: 13.8496,
    content: "Pula, Croatia"
  }]; 
  
  // Draw updated locations!
  drawLocationsToMap();
  
}, 3000);
#map {
  height: 190px;
}
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin="" />

<div id="map"></div>

<script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在传单中更新标记

在Google地图中添加新标记之前删除先前的标记

删除以前的标记(Google地图)

传单删除特定标记

从传单地图中删除图层

如何在带有条件标记渲染的传单地图中访问嵌套的json对象并使用其显示标记

如何从我自己的Google地图中删除标记

在Quickwidget openstreet地图中添加/删除标记

如何从传单地图中删除多个标记并添加新标记?

使用React状态,如何在添加新标记之前从Google地图中删除标记?

使用HTML和JavaScript代码在Leaflet中添加新标记之前,请删除以前的标记

传单geojsos,使用Ajax更新制造商,如何在重新添加之前删除所有标记?

geojson点数据标记未在传单地图中聚类

在Google地图中按纬度/经度删除标记

如何在谷歌地图上删除以前的标记

传单-如何自动删除以前的标记

如何在传单地图中删除传单标记窗格?

在更新位置之前,先从Google地图中删除特定标记

移动标记并更新Google地图中的位置

检索Shiny APP传单地图中所有标记的位置

删除以前的标记,标记的信息失败

传单:隐藏/显示动态插入到地图中的标记

从传单地图中删除 geoJSON

在由空间多边形数据框制作的传单地图中添加标记

在列表和地图上添加标记,但无法在循环时从地图中删除这些标记

有没有办法计算传单地图视图中有多少可见标记或标记簇?

显示标签并从地图中删除标记

反应传单更新标记

在添加新的之前从 Openlayers 地图中删除所有标记