Articles of geolocation

用于跟踪用户位置的高效后台服务

我正在开发一个小型的Android应用程序,我希望在其中具有Geolocationfunction。 我想要编码的是一种服务,它提供用户的更新位置,无论他们是否正在使用我的应用程序。 我知道,如果我不断检查用户的位置,它会耗尽设备的电池,所以我想要很好的解决方案。 例如,每隔5或10分钟给我更新一次。 我已经阅读了很多这个问题,但我想得到一个好的解决方案。 我读了这个页面 ,如果用户正在使用我的应用程序,但如果用户没有使用我的应用程序,那么这是一个很好的解决方案,那我该怎么办? 我该如何解决这个挑战?

由于不包括大地水准面高度,Android的GPS高度是否不正确?

我正在测试一个记录位置的Android应用程序(lat / long / alt)。 我在运行Android 2.2.1的三星GTS5830手机上运行该应用程序 我在这里和那里读到GPS高度通常不正确,因为地球不是完美的球形。 例如,在我的位置, 大地水准面的高度是52米。 我的理解是,这个高度将从“纯”GPS高度减去。 这对我的位置有意义: – altitude from GPS phone: 535 m – geoid altitude: 52 m – altitude from phone’s GPS minus geoid height: 482m – correct atlitude: 478 m 482足够接近真实的东西,让我在徒步旅行时跟踪海拔 上面的GPS高度公式减去大地水准面的高度是否正确? 我是否正确地假设在返回GPS高度时android没有考虑大地水准面的高度? 如果以上情况属实,是否适用于所有版本的Android? 这是我用来获取GPS坐标的代码: public class HelloAndroid extends Activity { @Override public void onCreate(Bundle savedInstanceState) { […]

geolocation.watchposition不能使用基于网络的位置关闭

我正在使用sencha 2.3.1 + phonegap 3.3.0为Android构建位置感知应用程序,并使用地理位置显示靠近用户位置排序的目的地列表。 如果基于网络的位置设置打开,一切正常。 但是,如果我将其关闭并仅保留基于gps的位置,则永远不会被检测到。 代码非常基本,我尝试了两个sencha路径: Ext.device.Geolocation.watchPosition({ frequency: 10000, callback: function(position) { AppHelper.setCurrentLocation(position);//yeah!! }, failure: function() { AppHelper.setLocationModeOff();//oouch! } }); 和phonegap路径: var success = function(position) { AppHelper.setCurrentLocation(position); }; var fail = function() { AppHelper.setLocationModeOff(); }; navigator.geolocation.watchPosition(success, fail,{ timeout: 30000 }); 结果是一样的,我试着等待几分钟让geolock发生但没有位置服务的迹象。 已安装phonegap位置插件,权限正确,如果启用了网络位置,一切正常。 我在Sony Tablet S上测试 我知道这个错误: 如何在Sencha中通过GPS获取用户位置但是我检查了代码并且它在sencha 2.3.1中被定义为固定 我会尝试其他设备,但我想知道是否有人经历过同样的事情。 TIA。 编辑:我使用系统默认浏览器(基于webkit)在我的Android设备上使用标准html5代码进行了实验。 我会访问我的设置页面并在每次运行时更改设置。 访问http://html5demos.com/geo我得到以下内容: […]

Geofences(Android示例应用程序)java.lang.ClassNotFoundException MainActivity

我有一个华硕Eee Tab(Transformer Prime TF201 Android v4.1.1)。 我正在阅读关于Geofencing的API并将下面的示例应用程序下载到我的设备=> http://developer.android.com/training/location/geofencing.html 。 但是当我打开它时它会终止。 我在AndroidManifest.xml文件中设置了目标sdk = 16 logcat的 06-04 19:39:34.176: E/AndroidRuntime(2596): FATAL EXCEPTION: main 06-04 19:39:34.176: E/AndroidRuntime(2596): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.android.geofence/com.example.android.geofence.MainActivity}: java.lang.ClassNotFoundException: com.example.android.geofence.MainActivity 06-04 19:39:34.176: E/AndroidRuntime(2596): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983) 06-04 19:39:34.176: E/AndroidRuntime(2596): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 06-04 19:39:34.176: E/AndroidRuntime(2596): at android.app.ActivityThread.access$600(ActivityThread.java:130) 06-04 19:39:34.176: E/AndroidRuntime(2596): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 06-04 19:39:34.176: E/AndroidRuntime(2596): at […]

MyLocationOverlay或LocationManager用于更新当前位置

我正在使用MapView在地图上显示用户的当前位置。 要在用户移动时更新位置,我必须选择: 我可以使用MyLocationOverlay绘制当前位置并将其扩展为允许跟踪移动中的用户位置并具有自定义标记。 MyLocationOverlay的问题在于我无法控制设备从GPS请求位置的频率。 我担心这里的电池耗尽。 我可以使用位置管理器并使用requestLocationUpdates订阅以从GPS获取位置。 在这里,我可以更好地控制查询GPS的频率。 我可以连接一个LocationListener并在那里编写代码。 但是我在这里看到,使用位置管理器可能不是一个好方法,而MyLocationOverlay应该优先于此。 另外,请考虑我的应用是基于位置的应用,应该在移动时跟踪用户的位置。 人们可以建议哪种方法最好,并且对电池的影响相对较小。 请注意,我是Android的初学者,因此请原谅任何明显的错误。 提前谢谢你,安迪

在没有getSpeed()方法的情况下计算导航应用程序的速度

我正在开发一款应用程序,它更像是朋友之间的时移赛。 我需要计算移动车辆的速度,我不想使用Location.getSpeed()方法。 (在底部详细解释为什么我不想使用它) 我正试图通过Latitude和Longitude帮助计算速度,这是我需要帮助的地方。 需要的帮助:我想知道的是: 如果算法是正确的 我应该用厘米而不是米来计算 如果有任何代码/库可以使用它。 我使用以下代码: 这给了我两个LatLng点之间的距离: long getDistanceBetweenPoints(double lat1, double lng1, double lat2, double lng2 ){ double dLat = Math.toRadians(lat2 – lat1); double dLon = Math.toRadians(lng2 – lng1); double a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2); double […]

在locationManager.removeUpdates()之后,通过将locationManager设置为null,GPS图标仍然闪烁

我正在开发位置跟踪应用程序。 但我停止通过做两件事来获得位置更新…… locationManager.removeUpdates(本); 和 将locationManager引用设置为null。 这将停止获得我想要的位置坐标… 但问题是gps图标仍然闪烁..这将耗尽设备的电池。 所以请帮我停止这个GPS修复…

Phonegap Geolocation无法正常工作

我正在使用Phonegap.Geolocation来获取用户的当前位置。 我在官方网站的文档中find了这个例子 。 但是,即使执行了onDevice ready,也不会执行成功或错误函数回调。 而我真的很困惑。 document.addEventListener(“deviceready”, onDeviceReady, false); // Cordova is ready // function onDeviceReady() { alert(‘deviceready’); navigator.geolocation.getCurrentPosition(onSuccess, onError); } // onSuccess Geolocation // function onSuccess(position) { var element = document.getElementById(‘geolocation’); element.innerHTML = ‘Latitude: ‘ + position.coords.latitude + ” + ‘Longitude: ‘ + position.coords.longitude + ” + ‘Altitude: ‘ + position.coords.altitude + ” + […]

Cordova Geolocation插件在Android上返回空位置对象

我在Geolocation Cordova插件(org.apache.cordova.geolocation)上遇到了一些问题。 它在iOS上运行良好,但在Android上根本没有。 据我了解,该插件曾经包含原生Android代码,但在某些时候被删除了,因为它太错误/慢,本机Web HTML5实现更加稳定和快速。 如果我使用仍然具有本机代码的最新插件版本(0.3.2),它确实有效(但速度很快,实际上并非总是如此)。 但是当它确实返回时,总是填充位置对象。 如果我使用最新的插件版本(1.0.1),getCurrentPosition()会立即返回一个空对象({})。 它不会引发错误。 如果我完全删除插件,并手动将权限添加到Android项目: 同样的事情发生了。 我只是无法让它工作,但它没有意义。 Android控制台中不显示任何错误。 有什么想法吗?

错误代码3当我尝试在平台Android中使用Cordova获取地理位置时超时

index.js代码: // debug function d(s) { console.log(s); $(“#status”).text(s); } // geo function geoWin(pos) { d(“geoWin(): “+pos.coords.latitude+”, “+pos.coords.longitude+”,”+pos.coords.speed); } function geoFail(error) { d(“geoFail(): “+error.code+”: “+error.message); } function startGeoWatch() { d(“startGeoWatch()”); opt = {maximumAge: 0,timeout: 2000, enableHighAccuracy: true}; watchGeo = navigator.geolocation.watchPosition(geoWin, geoFail, opt); } function stopGeoWatch() { d(“stopGeoWatch()”); navigator.geolocation.clearWatch(watchGeo); } // life cycle function onPause() { d(“onPause()”); […]