我正在尝试使用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)
答案 0 :(得分:0)
您可以通过插件后台服务存储GPS定位。在plugreg上搜索:
https://github.com/christocracy/cordova-plugin-background-geolocation
https://github.com/katzer/cordova-plugin-background-mode
阅读插件文档。这是了解为什么这些插件比后台任务的HTML5地理编码更有用的好方法。