J'ai mis en place une carte personnalisée qui permet aux utilisateurs d'ajouter des marqueurs aux préférences partagés à l'aide à long clic, enfin je l'ai eu à travailler. Sur ma carte, j'ai un bouton qui appelle une méthode "Clear Marker" quand le bouton est pressé. Je suis nécessaire pour quitter la carte et l'ouvrir à nouveau pour que les changements soient faits. Je voudrais que la carte soit mise à jour instantanément et existe-t-il un moyen de supprimer le dernier élément ajouté aux préférences partagées? IE effacer le marqueur précédent, pas tous les marqueurs ajoutés. Le code utilisé pour stocker un marqueur estUtilisation des préférences partagées pour supprimer un marqueur à la fois
@Override
public void onMapLongClick(LatLng latLng) {
addressEditText = (EditText) findViewById(R.id.editTextAddMarker);
title12 = addressEditText.getText().toString();
if (title12.length() > 2) {
MarkerOptions markerOpt1 = new MarkerOptions()
.title(title12)
.anchor(0.5f, 0.5f);
markerOpt1.position(latLng);
mMap.addMarker(markerOpt1);
Toast.makeText(this, "Marker Added", Toast.LENGTH_LONG).show();
locationCount++;
/** Opening the editor object to write data to sharedPreferences */
SharedPreferences.Editor editor = sharedPreferences.edit();
// Storing the latitude for the i-th location
editor.putString("lat" + Integer.toString((locationCount - 1)), Double.toString(latLng.latitude));
// Storing the longitude for the i-th location
editor.putString("lng" + Integer.toString((locationCount - 1)), Double.toString(latLng.longitude));
//editor.putString("title", addressEditText.getText().toString());
editor.putString("title" + (locationCount-1), addressEditText.getText().toString());
// Storing the count of locations or marker count
editor.putInt("locationCount", locationCount);
/** Saving the values stored in the shared preferences */
editor.commit();
} else if (title12.length() < 1) {
Toast.makeText(this, "Enter title at the top left.", Toast.LENGTH_LONG).show();
}
}
je récupère ensuite les données des préférences partagées et dessine sur la carte dans mon onMapReady()
// Opening the sharedPreferences object
sharedPreferences = getSharedPreferences("location", 0);
// Getting number of locations already stored
locationCount = sharedPreferences.getInt("locationCount", 0);
// If locations are already saved
if (locationCount != 0) {
String lat = "";
String lng = "";
String title13 = "";
// Iterating through all the locations stored
for (int i = 0; i < locationCount; i++) {
// Getting the latitude of the i-th location
lat = sharedPreferences.getString("lat" + i, "0");
// Getting the longitude of the i-th location
lng = sharedPreferences.getString("lng" + i, "0");
SharedPreferences myPrefs = PreferenceManager.getDefaultSharedPreferences(this);
title13 = sharedPreferences.getString("title" + i, "0");
//Toast.makeText(this, lat + "," + lng, Toast.LENGTH_LONG).show();
double lat3 = Double.valueOf(lat).doubleValue();
double lng3 = Double.valueOf(lng).doubleValue();
position1 = new LatLng(lat3, lng3);
drawMarker(position1,title13);
}
}
Enfin, le code utilisé pour enlever le marqueur (Le problème est ici). Les marqueurs ne sont pas retirés de la carte après avoir appuyé sur le bouton, seulement lorsque l'utilisateur appuie sur le bouton et retourne à la carte. Aussi, il efface les préférences partagées, quelqu'un sait-il comment je peux simplement supprimer le dernier élément ajouté?
private void clearMarker() {
// Opening the editor object to delete data from sharedPreferences
SharedPreferences.Editor editor = sharedPreferences.edit();
// Clearing the editor
editor.clear();
// Committing the changes
editor.commit();
}
}
ci-dessus est appelé à "onclick" via un bouton. Est ce que quelqu'un sait comment accomplir cela? Toute aide sera grandement appréciée.
Pouvez-vous expliquer ce que je dois changer ou ajouter exactement? Ou les étapes que je dois suivre pour y parvenir? Je suis encore en train de développer des compétences en programmation/android et j'ai encore un long chemin à parcourir. Tous les conseils dans la bonne direction seraient grandement appréciés. – MichaelCS
J'ai modifié la réponse pour inclure plus de détails. J'espère que cela aide :) –