Android 谷歌地图API保存标记并在下一次启动时加载
这个标题很蹩脚,但这正是我想弄明白的。我只想能够在地图上长时间单击创建标记,然后将这些标记保存在db、首选项、数组列表中,我不知道,只是保存在一些持久性存储中,在下一次启动应用程序时不会将它们擦除。我想保持它的简单,如果有可能只是分享偏好,那么请告诉我如何。 这是密码Android 谷歌地图API保存标记并在下一次启动时加载,android,google-maps-api-2,markers,Android,Google Maps Api 2,Markers,这个标题很蹩脚,但这正是我想弄明白的。我只想能够在地图上长时间单击创建标记,然后将这些标记保存在db、首选项、数组列表中,我不知道,只是保存在一些持久性存储中,在下一次启动应用程序时不会将它们擦除。我想保持它的简单,如果有可能只是分享偏好,那么请告诉我如何。 这是密码 public class MainActivity extends Activity implements ParsingCallback { private GoogleMap mMap; Marker mar
public class MainActivity extends Activity implements ParsingCallback {
private GoogleMap mMap;
Marker marker = null;
String s;
GoogleMapOptions options;
LocationManager lm;
LatLng userLocation;
Location location;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
options = new GoogleMapOptions();
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
listOfPoints = new ArrayList<SavedMarkers>();
mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setCompassEnabled(true);
mMap.getUiSettings().setRotateGesturesEnabled(true);
mMap.getUiSettings().setZoomGesturesEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
}
/** On Map Long Click */
mMap.setOnMapLongClickListener(new OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng arg0) {
mMap.addMarker(new MarkerOptions().position(arg0).title(arg0.toString()));
Toast.makeText(getApplicationContext(), "Marker Created", Toast.LENGTH_SHORT).show();
}
});
}
}
public类MainActivity扩展活动实现ParsingCallback{
私有谷歌地图;
标记=null;
字符串s;
谷歌地图选项;
位置经理lm;
LatLng用户位置;
位置;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
选项=新的GoogleMapOptions();
mMap=((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
lm=(LocationManager)getSystemService(Context.LOCATION\u服务);
listOfPoints=newarraylist();
mMap.setMapType(GoogleMap.MAP_TYPE_卫星);
mMap.setMyLocationEnabled(真);
mMap.getUiSettings().setCompassEnabled(true);
mMap.getUiSettings().setRotategestureEnabled(true);
mMap.getUiSettings().setZoomGeturesEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(true);
}
/**在地图上长按*/
setOnMapLongClickListener(新的OnMapLongClickListener(){
@凌驾
在MaplongClick(LatLng arg0)上的公共无效{
mMap.addMarker(新的MarkerOptions().position(arg0.title)(arg0.toString());
Toast.makeText(getApplicationContext(),“标记已创建”,Toast.LENGTH_SHORT.show();
}
});
}
}
使用Gson对保存的标记数组列表进行序列化和反序列化
Type listOfMarkers = new TypeToken<List<SavedMarkers>>(){}.getType();
String stringToSaveInSharedPreferences = gson.toJson(list, listOfMarkers);
List<SavedMarker> markers = gson.fromJson(stringRetrievedFromSharedPreferences,listOfMarkers)
Type listOfMarkers=new-TypeToken(){}.getType();
String stringToSaveInSharedPreferences=gson.toJson(列表,市场列表);
List markers=gson.fromJson(StringRetrievedFromSharedReferences,listOfMarkers)
) 有什么问题吗?每次创建market时,只需将其属性添加到某个数组中。然后重用这个数组。如果我知道怎么做,我根本不会问你的问题是general@Malachiasz不太一般。请再读一遍,这家伙已经仔细展示了他到目前为止所做的一切。为什么要投否决票?