uni-app 高德地图地理围栏标记功能,并且可以知道用户是否在该范围内

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

uni-app 高德地图地理围栏标记功能,并且可以知道用户是否在该范围内

类似 附件 图片

image

7 回复

后台数据库存有用户的坐标点就可以做


用户是移动的

高德地图定位扩展、地理围栏、电子围栏(ios、andorid):https://ext.dcloud.net.cn/plugin?id=11291

回复 闪到腰的咸鱼: 官方审核中

高德持续定位,地理围栏和猎鹰轨迹 (Android和iOS) https://ext.dcloud.net.cn/plugin?id=7082

要在uni-app中实现高德地图地理围栏(GeoFence)标记功能,并检测用户是否在该范围内,你可以使用高德地图的JavaScript API。以下是一个基本的实现步骤和代码示例:

步骤一:引入高德地图SDK

首先,你需要在uni-app项目中引入高德地图的JavaScript SDK。在pages/index/index.vue<script>标签内添加如下代码:

export default {
  data() {
    return {
      map: null,
      fence: null, // 围栏对象
      geoFenceCenter: [116.397428, 39.90923], // 围栏中心点
      geoFenceRadius: 1000, // 围栏半径,单位:米
    };
  },
  mounted() {
    this.initMap();
  },
  methods: {
    initMap() {
      // 引入高德地图SDK
      const script = document.createElement('script');
      script.type = 'text/javascript';
      script.src = 'https://webapi.amap.com/maps?v=2.0&key=你的高德地图API密钥';
      script.onload = () => {
        this.createMap();
      };
      document.body.appendChild(script);
    },
    createMap() {
      this.map = new AMap.Map('container', {
        resizeEnable: true,
        center: this.geoFenceCenter,
        zoom: 14,
      });
      this.addGeoFence();
    },
    addGeoFence() {
      this.fence = new AMap.Circle({
        center: this.geoFenceCenter,
        radius: this.geoFenceRadius,
        strokeColor: "#FF33FF",    //线颜色
        strokeOpacity: 0.2,       //线透明度
        strokeWeight: 3,          //线宽
        fillColor: "#1791fc",     //填充色
        fillOpacity: 0.35,       //填充透明度
      });
      this.map.add(this.fence);

      this.checkIfInsideFence();
    },
    checkIfInsideFence() {
      const userPosition = [116.398428, 39.90823]; // 假设的用户位置
      const isInside = this.fence.getBounds().contains(userPosition);
      console.log(`用户是否在围栏内: ${isInside}`);
    },
  },
};

步骤二:HTML部分

pages/index/index.vue<template>标签内添加一个容器来展示地图:

<template>
  <view class="container">
    <div id="container" style="width: 100%; height: 100vh;"></div>
  </view>
</template>

步骤三:样式部分

确保pages/index/index.vue<style>标签内包含基本样式:

<style>
.container {
  width: 100%;
  height: 100vh;
}
</style>

注意事项

  1. API密钥:确保替换代码中的你的高德地图API密钥为实际的高德地图API密钥。
  2. 用户位置checkIfInsideFence方法中的userPosition是示例位置,实际应用中需通过定位API获取用户实时位置。
  3. 权限:确保应用有访问用户位置的权限。

以上代码提供了一个基本的实现框架,你可以根据实际需求进行扩展和优化。

回到顶部