当前位置:首页 > 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);

可视化距离展示

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

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 实现地图路线

使用 Vue 实现地图路线功能 集成地图 SDK Vue 中实现地图路线功能通常需要依赖第三方地图 SDK,例如高德地图、百度地图或腾讯地图。以高德地图为例,可以通过以下方式集成: 在 in…

js实现滚动距离

js实现滚动距离

获取滚动距离的方法 使用window.pageYOffset或window.scrollY可以获取垂直滚动距离。这两个属性返回的值相同,都是文档从顶部开始滚动过的像素数。 const scroll…

js实现手绘地图

js实现手绘地图

实现手绘地图的JavaScript方法 使用Canvas绘制基础地图 Canvas API适合绘制手绘风格的图形。通过设置线条的粗糙度和填充颜色,可以模拟手绘效果。 const canvas =…

js实现全景地图

js实现全景地图

实现全景地图的基本思路 全景地图通常通过将多个图像拼接成一个360度视图来实现。在JavaScript中,可以使用Three.js等3D库来创建全景效果。 使用Three.js创建全景地图 Thre…

jquery 地图

jquery 地图

jQuery 地图插件推荐 jQuery 地图插件通常用于在网页中集成交互式地图功能。以下是几种常用的 jQuery 地图插件及其特点: 1. jQuery Vector Maps (jVector…

uniapp定位距离

uniapp定位距离

uniapp获取定位距离的方法 在uniapp中计算两个坐标点之间的距离,可以通过以下步骤实现: 获取用户当前位置 使用uniapp的uni.getLocationAPI获取当前设备的经纬度坐标:…