当前位置:首页 > JavaScript

js实现路线导航

2026-02-02 15:12:54JavaScript

使用 Geolocation API 获取当前位置

通过 navigator.geolocation.getCurrentPosition 获取用户当前位置的经纬度坐标。需要用户授权地理位置权限。

navigator.geolocation.getCurrentPosition(
  (position) => {
    const { latitude, longitude } = position.coords;
    console.log(`当前位置: ${latitude}, ${longitude}`);
  },
  (error) => {
    console.error("获取位置失败:", error.message);
  }
);

集成地图服务(如 Google Maps API)

使用第三方地图服务(如 Google Maps、Mapbox 或高德地图)显示地图并绘制路线。以 Google Maps 为例:

function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 14,
    center: { lat: 39.9042, lng: 116.4074 }, // 默认中心点(北京)
  });

  const directionsService = new google.maps.DirectionsService();
  const directionsRenderer = new google.maps.DirectionsRenderer();
  directionsRenderer.setMap(map);

  // 计算路线
  calculateAndDisplayRoute(directionsService, directionsRenderer);
}

function calculateAndDisplayRoute(directionsService, directionsRenderer) {
  directionsService.route(
    {
      origin: "北京市海淀区", // 起点
      destination: "北京市朝阳区", // 终点
      travelMode: google.maps.TravelMode.DRIVING, // 出行方式(驾车)
    },
    (response, status) => {
      if (status === "OK") {
        directionsRenderer.setDirections(response);
      } else {
        alert("路线规划失败: " + status);
      }
    }
  );
}

使用 Leaflet.js 实现轻量级导航

Leaflet 是一个开源库,适合轻量级地图需求:

const map = L.map("map").setView([39.9042, 116.4074], 13);
L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png").addTo(map);

// 添加路线
const routingControl = L.Routing.control({
  waypoints: [
    L.latLng(39.9042, 116.4074), // 起点
    L.latLng(39.9493, 116.3975), // 终点
  ],
  routeWhileDragging: true,
}).addTo(map);

实现实时导航更新

通过 watchPosition 监听位置变化,动态更新路线:

const watchId = navigator.geolocation.watchPosition(
  (position) => {
    const { latitude, longitude } = position.coords;
    updateRoute(latitude, longitude); // 调用地图API更新路线
  },
  (error) => {
    console.error("位置监听失败:", error.message);
  },
  { enableHighAccuracy: true }
);

// 清除监听
// navigator.geolocation.clearWatch(watchId);

注意事项

  • 所有地图服务需申请API密钥(如Google Maps需key参数)。
  • 部分浏览器(如Chrome)要求地理位置请求必须通过HTTPS协议。
  • 移动端需处理权限拒绝情况,提供手动输入地址的备选方案。

js实现路线导航

标签: 路线js
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https:/…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js实现复制到剪贴板

js实现复制到剪贴板

使用document.execCommand方法(传统方式,已废弃但部分浏览器仍支持) 该方法适用于旧版浏览器,但已被标记为废弃。执行前需确保文本已被选中: function copyToClipb…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…