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特色开发,基于位置服务,出现的问题

我的 Android 程序上的 GPS 坐标不准确

Android模拟器GPS位置给出了错误的时间

Android 位置管理器每次返回相同的 GPS 坐标

我想在 Android Studio 中给出经度和纬度,我手机的 gps 会跳到那个位置

android:如何使用模拟(假)坐标修复 gps?