java - 谷歌地图 GeoPoint 类失去精度

标签 java android google-maps precision

我正在尝试将 Google map 中的一些地理位置数据放入数据库中。但是传递 GeoPoint 对象时,我似乎失去了大量的精度。

我得到一个 Intent 作为 onActivityResult 响应的结果,在 Intent 中是地理点的额外数据:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.d(TAG,String.format("doMark returns with %d", resultCode));


    int lat = data.getIntExtra("MARK_LAT", 0);
    int lng = data.getIntExtra("MARK_LNG", 0);

    Log.d(TAG, String.format("Orig lat/lng %d:%d", lat, lng));

    OverlayItem oi = new OverlayItem(new GeoPoint(lat,lng), "ID", "");

    Log.d(TAG, String.format("GeoPoint lat/lng %d:%d", 
            oi.getPoint().getLatitudeE6(),
            oi.getPoint().getLongitudeE6()));

    m_data.addMarker(m_gp, data.getIntExtra("MARK_ID", R.drawable.tile5));

    super.onActivityResult(requestCode, resultCode, data);
}

在 logcat 中我得到:

03-08 10:28:16.164: D/TREASUREACTIVITY(1653): 原始纬度/经度 42234412:-70999749 03-08 10:28:16.164: D/TREASUREACTIVITY(1653): GeoPoint 纬度/经度 42234412:-70999749

看起来不错! GeoPoint lat/lng 与输入值相同。

m_data.addMarker() 函数如下:

public void addMarker(GeoPoint p, int id) {
    SQLiteDatabase db = getWritableDatabase();
    ContentValues values = new ContentValues();
    values.put("TIME", System.currentTimeMillis());
    values.put("LAT", p.getLatitudeE6());
    values.put("LNG", p.getLongitudeE6());
    values.put("MARK_ID", id);
    db.insert("MARKER", null, values);
    Log.d(TAG,String.format("INSERT MARKER %d %d",p.getLatitudeE6(),
            p.getLongitudeE6()));
    db.close();
}

addMarker() 的 logcat 是:

03-08 10:28:16.194: D/DDATA(1653): 插入标记 42234000 -71000000

我假设幕后正在进行某种转换/促销......但代码非常简单。

你猜一下精度去了哪里吗?

最佳答案

您的 addMarker 调用使用的是 m_gp,而不是 oi.getPoint() - 因此它根本不使用相同的值。

也许这不是真正的问题,但您可能只需要:

m_data.addMarker(oi.getPoint(), data.getIntExtra("MARK_ID", R.drawable.tile5));

关于java - 谷歌地图 GeoPoint 类失去精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620343/

相关文章:

Java Bean Validation 2.0 Hibernate Validator - 具有外部 XML 配置的可执行 JAR

java - 如何使用SunMSCAPI key 解密RSA-OAEP

java - Android:定期(在后台)打开 tcp 连接约 2 分钟的最有效方法

google-maps - Google map 服务从v2升级到v3时如何使用PL/SQL生成数字签名?

Javascript onClick 双击

java - IndexOutOfBound 在@Lob 字段中搜索

java - 为什么我们在 Java 中声明私有(private)变量?

android - 在手机上更改设置或执行任务的 adb shell 命令

android - 使用 repo 下载 AOSP android-4.4.4_r2

java.lang.RuntimeException : Waited too long for browser bridge with googlemaps