要实现的功能要求为:
当第一次启动地图时,自动定位到我所在的位置,当第二次定位的时候,保存上次的定位点,这次直接先显示上次定位的地点,然后在定位到我现在所在的位置。
首先看下效果图:
第一次启动软件时的截图:
初始化时的定位信息
再次启动定位时的信息截图:
以后定位时显示的信息
主要思路:
这里主要运用到SharedPreferences,android的一种轻型的存储方式。当程序退出时保存上次定位点的信息,当再次启动时,取出定位信息然后进行定位,其次在进行正常的定位功能。
优点:
这样可以节省定位时间以及不必要的流量等。
代码解释:
@Override
protected void onDestroy() {
super.onDestroy();
if(mapManager != null )
mapManager.destroy();
/*退出时保存这次的定位信息*/
SharedPreferences settings=getSharedPreferences("GeoPoint_Info",0);
settings.edit().putLong(mStringInitLatitude,mMyPlaceGeoPoint.getLatitudeE6()).commit();
settings.edit().putLong(mStringInitLongtitude, mMyPlaceGeoPoint.getLongitudeE6()).commit();
mapManager=null;
}
@Override
public void onCreate(Bundle savedInstanceState) {
/*保存上次定位点以便于下次打开直接定位到该位置*/
SharedPreferences settings=getSharedPreferences("GeoPoint_Info",MODE_PRIVATE);
mInitLatitude=settings.getLong(mStringInitLatitude, mInitLatitude);
Log.d(mStringInitLatitude, ""+mInitLatitude);
mInitLongtitude=settings.getLong(mStringInitLongtitude, mInitLongtitude);
Log.d(mStringInitLongtitude, ""+mInitLongtitude);
Toast.makeText(timeLocation.this, "上次位置为:\n"+"经度:"+mInitLatitude+"\n"+"纬度:"+mInitLongtitude+"\n", Toast.LENGTH_LONG).show();
//mMapView.getController().animateTo(new GeoPoint((int)mInitLatitude,(int)mInitLongtitude));
mMapView.getController().setCenter(new GeoPoint((int)mInitLatitude,(int)mInitLongtitude));
}
哈哈 ,就这样,简单方便的实现了改变默认定位初始点的位置。
原文地址:点击打开链接