如何在地图上构建Runkeeper风格的GPS日志?

时间:2014-09-08 20:16:42

标签: angularjs map gps ionic-framework

我正在尝试使用Ionic Framework和Angular.js构建移动应用程序。 此应用程序的一部分将是您开始在地图上记录GPS位置的视图。完成记录后,您应该看到您拍摄的路线,并了解它所花费的距离和时间。几乎是Runkeeper / Endomondo风格,但更简单。

这在Ionic / Angular中甚至可能吗?或者是否需要原生iOS / Android? 如果有可能,你能帮助我开始吗? 我在Stackoverflow上的搜索似乎表明它有可能以某种方式,但所有问题都过于先进,作者已经在它的中间。我需要帮助找到起点。

我已经在Ionic的论坛(http://forum.ionicframework.com/t/can-i-build-gps-logging-on-map-in-ionic/9296/2)中提出了这个问题,但是现在已经超过12个小时了,没有回复,所以我把希望寄托在你身上那些人在Stackoverflow。 我是编程新手,所以请耐心等待,不要以为我知道的太多了。谢谢!

我没有任何地图偏好设置。除非有人说不同,否则我会使用谷歌地图。 我在Mac上工作。我安装了Ionic,cordova,angular.js和node.js.

更新9月9日09:43 CET: 我已经得到了一个提示,可以查看ng-cordova的插件" $ cordovaGeolocation"。我现在就这样做了,我稍后会报道。

9月9日更新,10:50 CET 好的,我已经安装了ngCordova和$ cordovaGeolocation插件。 我觉得这个位置是正确的。 但是现在如何开始保存这些位置?一个按钮应该从此开始并结束它。 (然后在地图上显示每个数据点,或者理想情况下从头到尾画一条线)

9月10日更新,11:15 CET 我现在在控制器中有这个代码。它来自ngCordova $ cordovaGeolocation插件。 它似乎只运行一次。如何随着时间的推移继续为阵列提供位置?

        $cordovaGeolocation
        .getCurrentPosition()
        .then(function (position) {
            var lat  = position.coords.latitude
            var long = position.coords.longitude
        }, function(err) {
            // error
            alert('code: '    + err.code    + '\n' +
                'message: ' + err.message + '\n');
        });

    // begin watching
    var watch = $cordovaGeolocation.watchPosition({ frequency: 1000 });
    watch.promise.then(function() { /* Not  used */ },
        function(err) {
            // An error occurred.
            alert('code: '    + err.code    + '\n' +
                'message: ' + err.message + '\n');
        },
        function(position) {
            // Active updates of the position here
            // position.coords.[ latitude / longitude]
            var element = document.getElementById('geolocation');
            element.innerHTML = 'Latitude: '  + position.coords.latitude      + '<br />' +
                'Longitude: ' + position.coords.longitude     + '<br />' +
                'Timestamp: ' + position.timestamp + '<br />' +
            '<hr />'      + element.innerHTML;
        });
    // clear watch
    $cordovaGeolocation.clearWatch(watch.watchID)

1 个答案:

答案 0 :(得分:0)

您可以通过插件后台服务存储GPS定位。在plugreg上搜索:

https://github.com/christocracy/cordova-plugin-background-geolocation

https://github.com/katzer/cordova-plugin-background-mode

阅读插件文档。这是了解为什么这些插件比后台任务的HTML5地理编码更有用的好方法。