Stathis001 / Tourist_Guide

0 stars 0 forks source link

Πληροφορίες Τοποθεσίας μετά από κλικ στον δείκτη. #17

Closed Stathis001 closed 10 months ago

Stathis001 commented 10 months ago

Χρειάζεται να δημιουργηθεί μια συνάρτηση μέσα στην κλάση MarkerManager.java (π.χ. ShowMarkerInfo(int markerID)) που θα εμφανίζει τις πληροφορίες της τοποθεσίας όταν γίνει κλικ στον δείκτη. (Για την επίτευξη αυτού του σκοπού πιθανόν να χρειαστεί όλοι οι δείκτες μας να αποθηκέυονται σε μία δομή δεδομένων αλλά ίσως και να μην είναι απαραίτητο).

Argiris2000 commented 10 months ago

public class MapManager { // Υποθέτουμε ότι έχετε μια λίστα με τους δείκτες τύπου MapMarker private List markers;

// Υποθέτουμε ότι έχετε μια αναφορά στο 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;
        }
    }
}

}

Argiris2000 commented 10 months ago

// Στην κλάση 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(); }

Argiris2000 commented 10 months ago

// Στην κλάση MapMarker private void showInfoWindow() { String message = "Πληροφορίες τοποθεσίας: " + markerPos.toString(); Toast.makeText(context, message, Toast.LENGTH_LONG).show(); }

Argiris2000 commented 10 months ago

import java.util.List;

public class MapManager { // Ορίζουμε τον τύπο της λίστας private List markers;

// Αναφορά στο 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;
            }
        }
    }
}

}