GPS 追踪器与 jQuery 移动、PhoneGap 和谷歌地图

Posted

技术标签:

【中文标题】GPS 追踪器与 jQuery 移动、PhoneGap 和谷歌地图【英文标题】:GPS tracker with jQuery mobile, PhoneGap and Google Maps 【发布时间】:2014-02-17 04:30:34 【问题描述】:

我已经使用 android 的 PhoneGap 开发了一个 jQuery Mobile 应用程序。现在,我需要一个 GPS 追踪器。我想获取用户的位置并将其与数据库中的一些坐标进行比较。

我想知道,这种方法是否可行,是否应该更改某些内容以及如何仅显示一次消息?

应用应每 20 秒检查一次位置 如果用户靠近目标(50 米),他应该会收到一条消息(但只有一次)
$( document ).on( "pageinit", function( event ) 

function userDistance() 

    // Wait for PhoneGap to load
    document.addEventListener("deviceready", onDeviceReady, false);
    var watchID = null;

    // PhoneGap is ready
    function onDeviceReady() 
        watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
        // Update every 10 seconds
        var options =  frequency: 10000 ;
        watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
    

    // onSuccess Geolocation
    function onSuccess(position) 

        // user location
        var loc1 = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

        // target location 
        $.getJSON("http://server:8080/getCoords", function(data) 
            var loc2 = new google.maps.LatLng(data[0].latitude, data[0].longitude);

            // distance
            var distance = google.maps.geometry.spherical.computeDistanceBetween (loc1, loc2);

            if (distance < 50)     
                alert("target arrived");
            
        );

    

    // onError Callback receives a PositionError object
    function onError(error) 

    

    // watching position every 20s
    setTimeout(userDistance, 20000);


userDistance();

);

【问题讨论】:

【参考方案1】:

不用勺子喂代码,逻辑很简单。

1) 在 global/root notify=0 中创建一个变量。该变量将告诉您的函数是否已通知用户 2)在您的警报例程中,添加以下代码

if (distance < 50 and **notified==0**)     
            **notified=1;** // tells your app that the user has been notified already, and wont alert again
            alert("target arrived");

        

3) 在您的 CHECK distance 例程中,添加一个评估 when distance > 50, reset the variable , notify = 0

这个逻辑解决了问题: 1) 当用户在地图的目标距离/半径(50m)内时,仅通知用户一次 2) 如果用户离开了目标半径,会在进入该半径时再次通知一次。

希望对你有帮助

【讨论】:

以上是关于GPS 追踪器与 jQuery 移动、PhoneGap 和谷歌地图的主要内容,如果未能解决你的问题,请参考以下文章

搭建一个全功能 GPS 追踪系统

jquery - 让 gps 脚本运行一次,不需要停止和开始按钮

wp8后台gps追踪器停止工作

如何通过GPS结合UWB技术实现车载监控精准定位?

开源GPS追踪 之 为何费力不讨好

Android+GPS轨迹跟踪器