uni-app手机端地图如何开启实现带箭头的当前定位?

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

uni-app手机端地图如何开启实现带箭头的当前定位?

Image

6 回复

在map标签里直接加show-location,不用等于true就能显示出来


app端能做到吗

H5端默认的是腾讯底图 location什么的一个属性加上就有箭头了,但是不稳定,有时候不出来,APP端是没有箭头的

回复 St23eh1i: 是啊,我也发现app端没有这个箭头定位,太坑了吧

回复 6***@qq.com: nvue有

在uni-app中,你可以使用map组件来实现带箭头的当前定位功能。map组件提供了多种功能,包括显示当前位置、设置标记点、自定义覆盖物等。为了实现带箭头的当前定位,你需要结合map组件的show-location属性和自定义标记点来实现。

以下是一个示例代码,展示了如何在uni-app中实现带箭头的当前定位功能:

<template>
  <view>
    <map
      id="map"
      :longitude="longitude"
      :latitude="latitude"
      :scale="scale"
      :markers="markers"
      :show-location="true"
      style="width: 100%; height: 300px;"
      @locationchange="onLocationChange"
    >
      <!-- 自定义覆盖物用于显示箭头 -->
      <cover-view class="arrow-container" :style="arrowStyle">
        <cover-image class="arrow" src="/static/arrow.png"></cover-image>
      </cover-view>
    </map>
  </view>
</template>

<script>
export default {
  data() {
    return {
      longitude: 0, // 初始经度
      latitude: 0,  // 初始纬度
      scale: 15,    // 缩放级别
      markers: [],  // 标记点数组
      arrowStyle: {
        top: '50%',
        left: '50%',
        transform: 'translate(-50%, -100%)', // 根据需要调整位置
      },
    };
  },
  methods: {
    onLocationChange(e) {
      this.longitude = e.detail.longitude;
      this.latitude = e.detail.latitude;
      // 更新箭头位置
      this.arrowStyle.transform = `translate(-50%, calc(-100% + ${e.detail.accuracy}px))`;
      
      // 更新标记点
      this.markers = [
        {
          id: 1,
          latitude: this.latitude,
          longitude: this.longitude,
          iconPath: '/static/location.png', // 自定义定位图标
          width: 50,
          height: 50,
        },
      ];
    },
  },
};
</script>

<style>
.arrow-container {
  position: absolute;
  pointer-events: none; /* 防止覆盖物遮挡地图交互 */
}
.arrow {
  width: 20px; /* 根据需要调整箭头大小 */
  height: 20px;
}
</style>

在这个示例中,我们使用了map组件的show-location属性来显示当前位置,并通过@locationchange事件监听位置变化。在位置变化时,我们更新了经纬度、标记点以及箭头的位置。箭头是通过自定义覆盖物cover-viewcover-image来实现的,你可以根据需要调整箭头的图片和位置。

请注意,示例中的箭头图片(/static/arrow.png)和定位图标(/static/location.png)需要你自己准备并放在项目的静态资源目录中。此外,由于不同设备的屏幕尺寸和分辨率不同,你可能需要根据实际情况调整箭头的位置和大小。

回到顶部