Android 谷歌地图API保存标记并在下一次启动时加载

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

这个标题很蹩脚,但这正是我想弄明白的。我只想能够在地图上长时间单击创建标记,然后将这些标记保存在db、首选项、数组列表中,我不知道,只是保存在一些持久性存储中,在下一次启动应用程序时不会将它们擦除。我想保持它的简单,如果有可能只是分享偏好,那么请告诉我如何。 这是密码

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不太一般。请再读一遍,这家伙已经仔细展示了他到目前为止所做的一切。为什么要投否决票?