Closed Stathis001 closed 10 months ago
public class MapManager {
// Υποθέτουμε ότι έχετε μια λίστα με τους δείκτες τύπου MapMarker
private List
// Υποθέτουμε ότι έχετε μια αναφορά στο GoogleMap
private GoogleMap googleMap;
// Υποθέτουμε ότι έχετε έναν κατασκευαστή που αρχικοποιεί τα markers και το googleMap
// Υποθέτουμε ότι έχετε μια μέθοδο που ρυθμίζει τους δείκτες στον χάρτη
public void setMarkersOnMap() {
for (MapMarker marker : markers) {
// Προσθέστε τον δείκτη στον χάρτη
googleMap.addMarker(new MarkerOptions().position(marker.getMarkerPos()).title(marker.getMarkerName()));
}
}
// Μέθοδος που εμφανίζει τις πληροφορίες για έναν δείκτη
public void showInfoWindow(int markerID) {
for (MapMarker marker : markers) {
if (marker.getMarkerID() == markerID) {
// Εδώ μπορείτε να χρησιμοποιήσετε τη μέθοδο showInfoWindow που έχετε ήδη υλοποιήσει στην κλάση MapMarker
marker.showInfoWindow();
break;
}
}
}
}
// Στην κλάση MapMarker private void showInfoWindow() { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(markerName) .setMessage("Πληροφορίες τοποθεσίας: " + markerPos.toString()) .setPositiveButton("Κλείσιμο", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); AlertDialog dialog = builder.create(); dialog.show(); }
// Στην κλάση MapMarker private void showInfoWindow() { String message = "Πληροφορίες τοποθεσίας: " + markerPos.toString(); Toast.makeText(context, message, Toast.LENGTH_LONG).show(); }
import java.util.List;
public class MapManager {
// Ορίζουμε τον τύπο της λίστας
private List
// Αναφορά στο GoogleMap
private GoogleMap googleMap;
// Κατασκευαστής για αρχικοποίηση των markers και του googleMap
public MapManager(List<MapMarker> markers, GoogleMap googleMap) {
this.markers = markers;
this.googleMap = googleMap;
}
// Ρυθμίζει τους δείκτες στον χάρτη
public void setMarkersOnMap() {
// Προσθέτουμε έλεγχο για null
if (markers != null && googleMap != null) {
for (MapMarker marker : markers) {
googleMap.addMarker(new MarkerOptions().position(marker.getMarkerPos()).title(marker.getMarkerName()));
}
}
}
// Εμφανίζει τις πληροφορίες για έναν δείκτη
public void showInfoWindow(int markerID) {
// Προσθέτουμε έλεγχο για null
if (markers != null) {
for (MapMarker marker : markers) {
if (marker.getMarkerID() == markerID) {
marker.showInfoWindow();
break;
}
}
}
}
}
Χρειάζεται να δημιουργηθεί μια συνάρτηση μέσα στην κλάση MarkerManager.java (π.χ. ShowMarkerInfo(int markerID)) που θα εμφανίζει τις πληροφορίες της τοποθεσίας όταν γίνει κλικ στον δείκτη. (Για την επίτευξη αυτού του σκοπού πιθανόν να χρειαστεί όλοι οι δείκτες μας να αποθηκέυονται σε μία δομή δεδομένων αλλά ίσως και να μην είναι απαραίτητο).