Сохранить маркеры на Android Google maps v2
Я использую Android Google maps V2 API и настроить его для добавления маркеров при длительном щелчке. Мне нужен способ сохранить эти маркеры и перезагрузить их, когда приложение возобновится снова. Как лучше всего это сделать? Пожалуйста, помогите
в настоящее время я добавляю маркеры следующим образом:
map.addMarker(new MarkerOptions().position(latlonpoint)
.icon(bitmapDescriptor).title(latlonpoint.toString()));
2 ответов
Я понял! Я могу легко сделать это, сохранив список точек массива в файл, а затем прочитав их из файла
Я делаю следующее onPause
:
try {
// Modes: MODE_PRIVATE, MODE_WORLD_READABLE, MODE_WORLD_WRITABLE
FileOutputStream output = openFileOutput("latlngpoints.txt",
Context.MODE_PRIVATE);
DataOutputStream dout = new DataOutputStream(output);
dout.writeInt(listOfPoints.size()); // Save line count
for (LatLng point : listOfPoints) {
dout.writeUTF(point.latitude + "," + point.longitude);
Log.v("write", point.latitude + "," + point.longitude);
}
dout.flush(); // Flush stream ...
dout.close(); // ... and close.
} catch (IOException exc) {
exc.printStackTrace();
}
и onResume
: Я делаю наоборот
try {
FileInputStream input = openFileInput("latlngpoints.txt");
DataInputStream din = new DataInputStream(input);
int sz = din.readInt(); // Read line count
for (int i = 0; i < sz; i++) {
String str = din.readUTF();
Log.v("read", str);
String[] stringArray = str.split(",");
double latitude = Double.parseDouble(stringArray[0]);
double longitude = Double.parseDouble(stringArray[1]);
listOfPoints.add(new LatLng(latitude, longitude));
}
din.close();
loadMarkers(listOfPoints);
} catch (IOException exc) {
exc.printStackTrace();
}
можно использовать тег onLongClickListener
для маркера, как показано ниже :
map.addMarker(new MarkerOptions()
.position(latlonpoint)
.icon(bitmapDescriptor)
.title(latlonpoint.toString()));
map.setOnMapLongClickListener(new OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng p_point) {
// TODO ...
}
});