Google Maps API 与 PubNub 实时位置追踪教程(三):地理位置追踪实战指南

作者:API传播员 · 2025-09-15 · 阅读时间:4分钟
本教程是四部分系列中的第三部分,专注于使用Google Maps API和HTML5位置API实现地理位置追踪。它详细介绍了如何实时获取设备位置数据,并将其可视化展示在地图上,适用于物流、导航和共享出行等领域。教程包含代码示例,指导完成从获取位置到初始化Google Maps API的全过程。

一. 地理位置追踪概述

这是我们在 Google Maps 平台和 PubNub 上构建实时地图和地理位置 API 来追踪设备的四部分系列教程的第三部分。

地理位置追踪是通过技术手段实时获取设备的地理位置信息,并将其可视化展示在地图上。它广泛应用于物流、导航、共享出行等领域,能够帮助用户实时了解设备或人员的位置动态。


二. 教程概述

在本教程中,我们将基于前两部分的内容,继续深入学习如何通过 Google Maps API 和 HTML5 位置 API 实现地理位置追踪。如果您尚未完成前两部分内容,请先确保完成以下前提条件:

1. 设置 JavaScript 开发环境

确保浏览器支持 ES6 或以上,并准备好相关开发工具,如 VS Code。

2. 学习如何在地图上添加标记

熟悉在地图上创建标记和管理标记的方法,为实时更新做准备。

完成上述准备工作后,我们将开始收集和发布设备的实时位置数据,并将其展示在网页或移动网页的地图上。


三. 代码详解

在前面的教程中,我们已经完成了应用程序的基础设置,包括为地图创建必要的 HTML 结构和 DIV 容器。接下来,我们将使用 HTML5 位置 API 来实时更新设备的位置。

1. HTML5 位置 API

实现实时位置追踪的主要步骤如下:

a. 设置初始位置

以旧金山附近的经纬度作为初始位置。

b. 创建位置获取函数

通过 HTML5 位置 API 获取设备的当前位置,并将其更新到浏览器变量中。

c. 定时更新位置

设置一个间隔计时器,定期调用位置获取函数,确保位置数据的实时性。

d. 返回位置对象

为了便于后续操作,将位置数据(纬度和经度)封装为 JavaScript 对象并返回。

示例代码如下:

// 获取用户当前位置示例
navigator.geolocation.getCurrentPosition(function(position) {
    const latitude = position.coords.latitude;
    const longitude = position.coords.longitude;
    console.log(当前位置:纬度 ${latitude}, 经度 ${longitude});
});

2. 初始化 Google Maps API

在完成位置数据获取后,初始化 Google Maps API 并渲染地图。确保所有 DOM 元素和 JavaScript 前提条件已正确设置:

<!DOCTYPE html>
<html>
<head>
    <title>Google Maps 实时位置追踪</title>
    <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY"></script>
</head>
<body>
    <div id="map" style="height: 500px; width: 100%;"></div>
    <script>
        // 初始化地图
        function initMap() {
            const mapOptions = {
                center: { lat: 37.7749, lng: -122.4194 }, // 旧金山
                zoom: 12
            };
            const map = new google.maps.Map(document.getElementById("map"), mapOptions);
        }
        initMap();
    </script>
</body>
</html>

四. 下一步计划

到目前为止,我们已经完成了地理位置追踪功能的 75%。在下一部分(第四部分)中,我们将添加最后一个关键功能——飞行路径。飞行路径将通过在地图标记后绘制轨迹,清晰展示设备的移动路线。敬请期待!


原文链接: https://www.pubnub.com/blog/geolocation-tracking-with-google-maps-api/