我试图把一些地理定位数据从谷歌地图放到数据库中。但是传递一个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
我假设在幕后有某种转换/促销......但代码非常简单。
任何有关精度去哪里的猜测?
是什么m_gp哪里是它产生的? – njzk2 2012-03-08 15:44:26