高德地图 删除marker(指定marker)

这篇博客详细介绍了如何在地图上实现点击添加点位并存储,以及删除指定点位并重新绘制剩余点位的功能。通过监听地图点击事件,将经纬度坐标存入数组,并创建对应的marker。删除时,清除所有marker,从数组中移除目标点位,然后遍历更新后的数组重新绘制marker。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击一个点位,生成一个marker

把所有点击过的点位,放入markerList数组

删除的时候,先清除所有marker,删除positionList数组里的某一项,再循环positionList把marker重绘出来

var positionList = [] // 经纬度数组
var markerList = [] // marker列表
var marker

// 初始化地图
var map = new AMap.Map("container"); 

// 地图绑定点击事件
map.on('click', function (e) { 
  let arr = [e.lnglat.getLng(), e.lnglat.getLat()];
  AddPoint(arr)
  positionList.push(arr)
});

// 添加点位
function AddPoint (arr) {
  let index = 1 + markerList.length // 序号
  var content = '<div class="marker-icon">' + index + '</div>'; // 自定义marker

  marker = new AMap.Marker({
    content: content,
    position: arr,//位置
  })

  markerList.push(marker)

  map.add(marker);//添加到地图
}

document.getElementById("del").onclick = clearMarker;
// 删除某点位,并重绘
function clearMarker () {

  map.remove(markerList); // 删除所有点位

  positionList.splice(1, 1);

  for (var i = 0, marker; i < positionList.length; i++) {

    let index = 1 + i // 序号
    var content = '<div class="marker-icon">' + index + '</div>'; // 自定义marker

    marker = new AMap.Marker({
      content: content,
      position: positionList[i]
    });

    map.add(marker);

    markerList.push(marker);
  }

}
清除高德地图的搜索结果 Marker,您可以通过以下步骤实现: 1. 在 Vue 组件中引入高德地图 JavaScript API: ``` <script src="https://webapi.amap.com/maps?v=1.4.15&key=YOUR_API_KEY"></script> ``` 2. 在 `mounted` 钩子函数中初始化地图,并将地图实例保存在 `this.map` 中: ``` mounted() { this.map = new AMap.Map('map-container', { zoom: 13, center: [116.397428, 39.90923] }); } ``` 3. 在搜索时,使用 `AMap.Marker` 创建 Marker,并保存在数组中: ``` search() { // 清除之前的 Marker this.clearMarkers(); // 搜索 AMap.plugin('AMap.PlaceSearch', () => { const placeSearch = new AMap.PlaceSearch({ city: '北京市', pageSize: 10, pageIndex: 1, map: this.map }); placeSearch.search('餐厅', (status, result) => { if (status === 'complete' && result.info === 'OK') { const poiList = result.poiList; poiList.forEach(poi => { const marker = new AMap.Marker({ position: poi.location, title: poi.name, map: this.map }); this.markers.push(marker); }); } }); }); }, ``` 4. 在清除搜索结果时,遍历 Marker 数组,调用 `setMap(null)` 方法将 Marker 从地图上移除,并清空数组: ``` clearMarkers() { this.markers.forEach(marker => { marker.setMap(null); }); this.markers = []; }, ``` 完整的 Vue 组件代码如下: ``` <template> <div> <div id="map-container"></div> <button @click="search">搜索餐厅</button> <button @click="clearMarkers">清除搜索结果</button> </div> </template> <script> export default { data() { return { map: null, markers: [] }; }, mounted() { this.map = new AMap.Map('map-container', { zoom: 13, center: [116.397428, 39.90923] }); }, methods: { search() { // 清除之前的 Marker this.clearMarkers(); // 搜索 AMap.plugin('AMap.PlaceSearch', () => { const placeSearch = new AMap.PlaceSearch({ city: '北京市', pageSize: 10, pageIndex: 1, map: this.map }); placeSearch.search('餐厅', (status, result) => { if (status === 'complete' && result.info === 'OK') { const poiList = result.poiList; poiList.forEach(poi => { const marker = new AMap.Marker({ position: poi.location, title: poi.name, map: this.map }); this.markers.push(marker); }); } }); }); }, clearMarkers() { this.markers.forEach(marker => { marker.setMap(null); }); this.markers = []; }, } }; </script> ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值