Android GPS 位置只给出第一个数字
Posted
技术标签:
【中文标题】Android GPS 位置只给出第一个数字【英文标题】:Android GPS position give just first number 【发布时间】:2012-11-20 04:50:03 【问题描述】:这是我的应用程序:
public class HlavnaAktivita extends MapActivity implements LocationListener
...
public void onLocationChanged(Location location)
Log.w("myApp", String.valueOf(location.getLatitude()));
当我给模拟器例如 48.590007 和 17.824579 时,它只写“17.0”。我试过http://www.androidcompetencycenter.com/?s=GPS这个教程(来自***),当我运行那个应用程序时,它写的位置很好,但在地图上只是四舍五入的位置(17、48)(根据maps.google.com的位置很好,但在地图上是 cca 100 公里错误)。
可能是什么问题?我尝试了很多教程,但仍然无法正常工作。
【问题讨论】:
【参考方案1】:要获得地图上的确切位置,您需要 2 个参数:
一个点的纬度和经度。GeoPoint
接受以微度为单位的纬度和经度,因此请尝试像这样创建您的点以获得更高的准确性:
double lati = location.getLatitude();
double longi = location.getLongitude();
GeoPoint geo_point= new GeoPoint((int)(lati * 1e6),(int)(longi * 1e6));
【讨论】:
是的,我知道...这是简化的代码,但是当我有这个时,双纬度也没有准确的位置(这个确切的代码 - (int)(lati * 1e6) 只给出了int 17000000 和 int 48000000 ......所以它只是同一件事)正如我所说,该页面中的 .akp 显示了我的位置的好数字,但在地图上它位于位置 17000000 和 4800000 ......在谷歌地图上这里是goo.gl/0ivrN,我距离那个位置 75 公里......【参考方案2】:它将您的数字转换为 int。为避免它尝试类似:
Log.w("myApp", String.valueOf((float) location.getLatitude()));
【讨论】:
谢谢,但这最后对我有用:geo_auto = new GeoPoint((int) (lat * 1000000), (int) (lng * 1000000)); () 丢失并出现问题【参考方案3】:这只是我的错误 - 我忘记添加 ()。对不起。
【讨论】:
以上是关于Android GPS 位置只给出第一个数字的主要内容,如果未能解决你的问题,请参考以下文章
《第一行代码》Android特色开发,基于位置服务,出现的问题