当前位置:首页 > VUE

vue实现地图距离

2026-02-22 01:26:11VUE

Vue 实现地图距离计算

在 Vue 中实现地图距离计算,通常需要结合地图 API(如高德、百度或 Google Maps)和数学公式(如 Haversine 公式)。以下是两种常见实现方式:

使用高德/百度地图 API

注册开发者账号并获取 API Key,在 Vue 项目中引入地图 SDK:

// 安装依赖(以高德为例)
npm install @amap/amap-jsapi-loader

// Vue 组件中加载
import AMapLoader from '@amap/amap-jsapi-loader';

export default {
  mounted() {
    AMapLoader.load({
      key: 'YOUR_API_KEY',
      version: '2.0'
    }).then((AMap) => {
      const map = new AMap.Map('map-container');
      // 计算两点距离
      const distance = AMap.GeometryUtil.distance(
        new AMap.LngLat(116.39, 39.9),  // 点1
        new AMap.LngLat(116.42, 39.92)  // 点2
      );
      console.log(distance + '米');
    });
  }
}

使用 Haversine 公式计算

若无需地图渲染,仅需计算经纬度距离,可使用 Haversine 公式:

function calculateDistance(lat1, lon1, lat2, lon2) {
  const R = 6371; // 地球半径(千米)
  const dLat = (lat2 - lat1) * Math.PI / 180;
  const dLon = (lon2 - lon1) * Math.PI / 180;
  const a = 
    Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.cos(lat1 * Math.PI / 180) * 
    Math.cos(lat2 * Math.PI / 180) * 
    Math.sin(dLon/2) * Math.sin(dLon/2);
  const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
  return R * c; // 返回千米
}

// Vue 中调用
this.distance = calculateDistance(39.9, 116.4, 39.92, 116.42);

可视化距离展示

结合地图标记和线段绘制(以高德为例):

vue实现地图距离

AMapLoader.load({ key: 'YOUR_KEY' }).then((AMap) => {
  const map = new AMap.Map('map-container');
  const marker1 = new AMap.Marker({ position: [116.39, 39.9] });
  const marker2 = new AMap.Marker({ position: [116.42, 39.92] });

  const polyline = new AMap.Polyline({
    path: [[116.39, 39.9], [116.42, 39.92]],
    strokeColor: 'red'
  });

  map.add([marker1, marker2, polyline]);
});

注意事项

  1. 地图 API 需申请合法密钥
  2. 浏览器环境下需启用 GPS 权限
  3. 大规模计算建议使用 Web Worker 避免阻塞
  4. 移动端注意坐标系转换(如 GCJ-02/WGS84)

以上方法可根据实际需求选择,API 方式精度更高但依赖网络,公式计算适合离线场景。

标签: 距离地图
分享给朋友:

相关文章

用vue实现地图

用vue实现地图

Vue 实现地图的常用方法 使用高德地图 API 高德地图提供完善的 JavaScript API,适合国内项目。注册高德开放平台账号后获取 key。 安装依赖: npm install @ama…

vue实现像素地图

vue实现像素地图

Vue 实现像素地图的方法 使用 Canvas 绘制像素地图 在 Vue 中可以通过 Canvas 实现像素地图的绘制。Canvas 提供了灵活的绘图 API,适合动态生成像素风格的图形。 <…

uniapp 地图层级

uniapp 地图层级

uniapp 地图层级设置方法 在uniapp中使用地图组件时,可以通过scale属性控制地图的缩放层级。scale值范围通常为3-20,数值越大,地图显示越详细。 <map styl…

uniapp地图怎么做

uniapp地图怎么做

uniapp地图实现方法 使用uniapp内置map组件 uniapp提供了内置的map组件,可以直接在页面中使用。在pages.json中配置页面时,需要声明需要使用地图的页面。 <temp…

vue实现接口地图

vue实现接口地图

Vue 中实现地图接口的集成方法 安装地图 SDK 或库 根据需求选择高德、百度或腾讯地图的 JavaScript SDK。通过 npm 或直接引入脚本方式安装,例如高德地图: npm instal…

vue地图怎么实现

vue地图怎么实现

vue地图实现方法 使用Vue实现地图功能可以通过集成第三方地图库如高德地图、百度地图或腾讯地图。以下是几种常见方法: 安装依赖 需要安装对应的地图SDK,例如高德地图: npm inst…