2012-03-08 63 views
0

我試圖把一些地理定位數據從谷歌地圖放到數據庫中。但是傳遞一個GeoPoint對象,我似乎失去了一大堆精度。谷歌地圖丟失精度GeoPoint類

我得到一個意向作爲onActivityResult反應的結果,目的是讓一個GeoPoint額外的數據:

@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 十月3日至8日: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的)是:

十月3日至8日:28:16.194:d/DDATA(1653):INSERT MARKER 42234000 -71000000

我假設在幕後有某種轉換/促銷......但代碼非常簡單。

任何有關精度去哪裏的猜測?

+0

是什麼m_gp哪裏是它產生的? – njzk2 2012-03-08 15:44:26

回答

2

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

也許這不是真正的問題,但你可能只需要:

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

ug ...大手指,小按鈕。 TKS! – uncle4 2012-03-08 15:58:08