【发布时间】:2014-08-22 00:43:47
【问题描述】:
我正在尝试存储我的 GMaps 标记,因此当我按下返回按钮并再次返回到我的地图活动时,在屏幕上显示我的标记。
我查看了这篇 Save state when back button is pressed 的帖子并得到了一些结果,但我离最初的目标还很远。
现在我可以看到我的第一个标记和最后一个标记。
这是我的代码:
public class MapsActivity extends FragmentActivity {
private GoogleMap mMap; // Might be null if Google Play services APK is not available.
private List<Marker> markerList;
public MapsActivity(){
if(markerList == null){
markerList = new ArrayList<Marker>();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
setUpMapIfNeeded();
LoadPreferences();
Intent intent = getIntent();
Bundle data = intent.getExtras();
String label = data.getString("sum");
int newLatitude = data.getInt("firstNumber");
int newLongitude = data.getInt("secondNumber");
MarkerOptions mo = new MarkerOptions().position(new LatLng(newLatitude, newLongitude)).title(label);
markerList.add(mMap.addMarker(mo));
}
@Override
protected void onResume() {
super.onResume();
setUpMapIfNeeded();
}
@Override
public void onBackPressed(){
super.onBackPressed();
SavePreferences();
}
private void SavePreferences(){
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("listSize", markerList.size());
for(int i = 0; i <markerList.size(); i++){
editor.putFloat("lat"+i, (float) markerList.get(0).getPosition().latitude);
editor.putFloat("long"+i, (float) markerList.get(0).getPosition().longitude);
editor.putString("title"+i, markerList.get(0).getTitle());
}
editor.commit();
}
private void LoadPreferences(){
SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
int size = sharedPreferences.getInt("listSize", 0);
for(int i = 0; i < size; i++){
double lat = (double) sharedPreferences.getFloat("lat"+i,0);
double longit = (double) sharedPreferences.getFloat("long"+i,0);
String title = sharedPreferences.getString("title"+i,"NULL");
markerList.add(mMap.addMarker(new MarkerOptions().position(new LatLng(lat, longit)).title(title)));
}
}
}
我的问题是如何存储我的标记,以便在我返回地图活动时显示它们? (使用这种或另一种方法)
【问题讨论】:
标签: android google-maps android-activity google-maps-android-api-2