uni-app app端,nvue开发 map地图使用 addMarkers 添加的新点盖不住旧的点

发布于 1周前 作者 bupafengyu 来自 Uni-App

uni-app app端,nvue开发 map地图使用 addMarkers 添加的新点盖不住旧的点

4 回复

你好,我看新增maker是不会覆盖,但是与图标也有一定关系,如果是个正方形就可以覆盖
我觉得你可以尝试一下其他效果:

尝试使用缩放+移动到中心点
尝试在点击后显示气泡之类的,显示相关信息


不能修复一下吗,现在我用自定义的气泡也是盖不住,再点一下就可以了

您好,同样的问题,请问解决了嘛

在uni-app的nvue环境中使用map组件时,如果通过addMarkers方法添加的新点盖不住旧的点,通常是因为标记(markers)的层级(z-index)没有正确处理。在nvue中,由于使用的是原生组件,z-index的处理方式可能与H5中的方式有所不同。在原生组件中,通常需要通过调整标记的添加顺序来实现覆盖效果,即后添加的标记会覆盖先添加的标记。

以下是一个简单的代码示例,展示了如何在uni-app的nvue中使用map组件,并通过addMarkers方法动态添加标记,确保新添加的标记能够覆盖旧的标记。

<template>
  <div>
    <map id="map" :longitude="longitude" :latitude="latitude" style="width: 100%; height: 100vh;"></map>
    <button @click="addMarker">Add Marker</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      longitude: 116.404, // 北京的经度
      latitude: 39.915,   // 北京的纬度
      markers: []
    };
  },
  methods: {
    addMarker() {
      const newMarker = {
        id: this.markers.length + 1, // 确保每个标记有一个唯一的id
        longitude: 116.404 + (Math.random() - 0.5) * 0.01, // 随机经度
        latitude: 39.915 + (Math.random() - 0.5) * 0.01,   // 随机纬度
        iconPath: '/static/marker.png', // 标记图标路径
        width: 50,
        height: 50
      };

      // 添加到markers数组中
      this.markers.push(newMarker);

      // 获取map组件实例
      const map = this.$refs.map.nativeView;

      // 清空旧标记
      map.removeMarkers({ markers: this.markers.slice(0, -1) });

      // 添加所有标记(包括新添加的)
      map.addMarkers({ markers: this.markers });
    }
  }
};
</script>

<style scoped>
/* 样式可以根据需要调整 */
</style>

注意

  1. 在上述代码中,我们通过removeMarkersaddMarkers方法来确保每次只保留最新的标记列表。这种方法虽然可以解决问题,但在实际应用中可能并不高效,特别是当标记数量很多时。
  2. 更优化的方法是利用标记的id和原生组件的更新机制来只更新或添加必要的标记,而不是每次都清空并重新添加所有标记。
  3. 由于nvue的限制,某些CSS样式(如z-index)可能无法直接应用于原生组件,因此需要通过调整标记的添加顺序来实现覆盖效果。
回到顶部