2012-03-08 21 views
0

私はGoogle Mapsから幾つかのジオロケーションデータをデータベースに入れようとしています。しかし、GeoPointオブジェクトの周りを回って、私は1トンの精度を失っているようです。Googleマップの精度を失うGeoPointクラス

私はテントで、onActivityResult応答の結果として意図取得がgeopointのための余分なデータです:

logcatで
@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); 
} 

私が取得:

3月8日10時28分: 16.164:D/TREASUREACTIVITY(1653):ORIG緯度/経度42234412:-70999749 3月8日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)である:

3月8日10:28:16.194:D/DDATA(1653):INSERT MARKER 42234000 -71000000

舞台裏で何らかのコンバージョン/プロモーションが行われていると推測していますが、コードはかなり単純です。

精度がどこに行くのかは推測できますか?

+0

をm_gp、どこでそれが作成されますが何ですか? – njzk2

答えて

2

addMarkerコールではm_gpではなくoi.getPoint()ではないので、同じ値を使用していません。

たぶんそれが本当の問題ではないですが、あなただけが必要な場合があります。

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

ug ...大きな指、小さなボタン。 Tks! – uncle4