如何才能获得相当准确的GPS定位?
我正试图为我的" LG Leon LTE"创建一个简单的高尔夫应用程序。电话告诉我每次击中的距离。我的计划是仅在需要时使用GPS - 获取我的起点位置,然后得到我的终点位置,并计算它们之间的距离。我认为我不需要不断更新。
我编写了一个测试程序,它使用以下内容在起点和终点获得单个位置:
locationManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, locationListener, null);
我的locationlistener包括:
longitude = loc.getLongitude();
latitude = loc.getLatitude();
我还包括:
accuracy = loc.getAccuracy();
numberOfSatellites = loc.getExtras().getInt("satellites");
计算我使用的两点之间的距离:
loc.distanceBetween(oldLatitude, oldLongitude, newLatitude, newLongitude, result);
distance = ((int) ((result[0] * 1.09361) + 0.5)); // meters to yards
我的应用的清单包括:
android.permission.ACCESS_FINE_LOCATION
android.hardware.location.gps
和我的手机"位置"功能打开,"位置模式"设置是 "仅限GPS"
希望提高准确性,我在起点和终点收集5个数据点,并用两种方式计算行进距离:
我的简单测试是在我家前面的一个住宅区进行的,房子只在街道的一侧,它们包括:
结果非常令人困惑。
有人可以提出改善结果的方法 - 更多的卫星,更准确吗? (我的手机的高尔夫测距仪应用程序似乎更准确;他们是如何做到的?)
谢谢。
答案 0 :(得分:0)
您似乎认为GPS具有无限的准确性。它没有。对于普通手机中的硬件类型,其精确到大约10-15米 - 称之为30-50英尺。如果没有真正准确的GPS设备,你不会比那更好,只需花费几百美元购买GPS。所以看到20码的摆动并没有超出规格,它是关于我期望的(记住准确性是一个圆,因此10-15米是半径 - 期望在两个极端之间20-30米)。你甚至会偶尔得到一些完全不合适的奇怪读物。
对于卫星 - 整个GPS系统有24颗卫星。如果您在家外看到20个,要么显示美国和欧盟网络,要么显示系统中的每个卫星。即使您可以同时收听两个网络,也无法一次达到20。 7足以获得你的位置。 9甚至更好。你不会得到比以往更多的东西,你没有视线。
也就是说,您可以使用过滤算法来尝试滤除噪音并获得更稳定的位置。查看卡尔曼滤波。