Stathis001 / Tourist_Guide

0 stars 0 forks source link

Θέλουμε σε κάθε marker να κουμπώσουμε ένα σχετικό με εκείνον url. #43

Open Stathis001 opened 7 months ago

Stathis001 commented 7 months ago

Ισως μέσα στο snippet του καθενός, αλλά δεν είναι απαραίτητο.

Argiris2000 commented 7 months ago

Για να προσθέσετε ένα κουμπί (button) με ένα σχετικό URL σε κάθε marker σε έναν χάρτη σε μια εφαρμογή Android, μπορείτε να χρησιμοποιήσετε την κλάση InfoWindowAdapter του Google Maps Android API. Αυτή η κλάση σάς επιτρέπει να προσαρμόσετε την εμφάνιση των πληροφοριών που εμφανίζονται όταν ο χρήστης κάνει κλικ σε έναν marker.

Παρακάτω είναι ένα παράδειγμα κώδικα για το πώς μπορείτε να υλοποιήσετε αυτήν τη λειτουργία:

Δημιουργία ενός προσαρμοσμένου InfoWindowAdapter:

Πρώτα, δημιουργήστε έναν προσαρμοσμένο InfoWindowAdapter που θα παρέχει το περιεχόμενο των πληροφοριών του κάθε marker. import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.MarkerOptions;

public class CustomInfoWindowAdapter implements GoogleMap.InfoWindowAdapter {

private final Context context;

public CustomInfoWindowAdapter(Context context) {
    this.context = context;
}

@Override
public View getInfoWindow(Marker marker) {
    // Επιστροφή null για τη χρήση της ενσωματωμένης παρουσίασης πληροφοριών του χάρτη
    return null;
}

@Override
public View getInfoContents(Marker marker) {
    // Δημιουργία προσαρμοσμένης παρουσίασης πληροφοριών
    View view = LayoutInflater.from(context).inflate(R.layout.custom_info_window, null);

    // Προσθήκη περιεχομένου στην παρουσίαση
    LatLng latLng = marker.getPosition();
    // Μπορείτε να πάρετε περισσότερες πληροφορίες από το marker και να προσαρμόσετε το περιεχόμενο ανάλογα

    Button button = view.findViewById(R.id.markerButton);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Εδώ μπορείτε να ανοίξετε το σχετικό URL
            // Παράδειγμα: Άνοιγμα του URL σε έναν web browser
            String url = "https://www.example.com";
            // Ενεργοποίηση ενεργότητα για ανοίγματος του URL
            // Σημείωση: Αυτό είναι ένα απλό παράδειγμα. Θα πρέπει να προσαρμόσετε τον κώδικα σας ανάλογα.
        }
    });

    return view;
}

} Καθορισμός του InfoWindowAdapter στον χάρτη:

Κατά τη δημιουργία του χάρτη, ορίστε τον προσαρμοσμένο InfoWindowAdapter στον χάρτη: import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback {

private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);
}

@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    // Προσθήκη marker στο χάρτη
    LatLng markerPosition = new LatLng(37.7749, -122.4194);
    MarkerOptions markerOptions = new MarkerOptions().position(markerPosition).title("Κάποιος Marker");
    Marker marker = mMap.addMarker(markerOptions);

    // Καθορισμός του προσαρμοσμένου InfoWindowAdapter στον χάρτη
    CustomInfoWindowAdapter infoWindowAdapter = new CustomInfoWindowAdapter(this);
    mMap.setInfoWindowAdapter(infoWindowAdapter);

    // Κεντράρισμα του χάρτη στο marker
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(markerPosition, 12.0f));

    // Εμφάνιση των πληροφοριών του marker κατά το κλικ
    marker.showInfoWindow();
}

} Δημιουργία του XML Layout (custom_info_window.xml) για το προσαρμοσμένο παράθυρο πληροφοριών:

Δημιουργήστε ένα νέο XML αρχείο στον φάκελο res/layout με το όνομα custom_info_window.xml: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content">

<!-- Περιεχόμενο παραθύρου πληροφοριών -->
<Button
    android:id="@+id/markerButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Άνοιγμα URL"
    android:padding="8dp"/>

Στο παραπάνω παράδειγμα, προστέθηκε ένα Button με το ID markerButton στο προσαρμοσμένο παράθυρο πληροφοριών, το οποίο μπορείτε να χρησιμοποιήσετε για να ανοίξετε το σχετικό URL.

Stathis001 commented 6 months ago

allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.092479913425834, 23.548556365564238)).title(getString(R.string.anastasios_eskitzis_reumatologos)).snippet(""))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.09034269429762, 23.55348399478657)).title(getString(R.string.maria_kokarida_wrila)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.08731152657037, 23.55017293627774)).title(getString(R.string.orthopaidiko_iatreio_enilikwn_kai_paidwn)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.07529662776701, 23.55353525970813)).title(getString(R.string.dipae)).snippet(String.valueOf(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.09835129725971, 23.551927608268336)).title(getString(R.string.lofos_koyla)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.09156654135183, 23.559917963233605)).title(getString(R.string.achmet_pasa_tzami)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.08828964518851, 23.553439602363994)).title(getString(R.string.Zilingiri_Tzami)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.09146333054632, 23.55051494660206)).title(getString(R.string.liberty_square)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.090984162331786, 23.54966866588395)).title(getString(R.string.archeological_museum_of_serres_bezesteni)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.10059767457084, 23.57097613512557)).title(getString(R.string.natural_history_museum)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.10434890738389, 23.553423758489348)).title(getString(R.string.agioi_anargyroi_valley)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.07791797232521, 23.542626119426355)).title(getString(R.string.intercity_bus_station_of_serres)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.07329171632362, 23.5470893150212)).title(getString(R.string.serres_camp)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.09486734480665, 23.558418965379346)).title(getString(R.string.philippos_xenia_hotel_hotel)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.10347193488058, 23.549222483272818)).title(getString(R.string.elpida_resort_spa_hotel)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.08930648512539, 23.527421488950267)).title(getString(R.string.serres_national_stadium)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.09293009514462, 23.55736205023394)).title(getString(R.string.serres_state_health_center)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.0941120281705, 23.546161726125494)).title(getString(R.string.kalithea_serres)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.097588736734345, 23.551225736764437)).title(getString(R.string.city_wine_bar_restaurant)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.082807410884556, 23.5425353795879)).title(getString(R.string.fire_service_emergency_services)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.07275655544222, 23.51766362781244)).title(getString(R.string.serres_racing_circuit)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.06602011402373, 23.54131497674441)).title(getString(R.string.la_vita_center)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.084803498471516, 23.546518769143844)).title(getString(R.string.serres_municipal_stadium)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.08315378520309, 23.551668610294023)).title(getString(R.string.ellhnwn_geuseis)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.08084088215488, 23.541583504790097)).title(getString(R.string.bruno_coffee_stores)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.08787638344969, 23.541433300952594)).title(getString(R.string.acs_courier)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.090423204868415, 23.58244886315631)).title(getString(R.string.general_hospital_of_serres)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.09137601208604, 23.503011834688117)).title(getString(R.string.ergostasio_zaharhs)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.14501059108502, 23.56798662373499)).title(getString(R.string.eleonas_waterfall)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.08450712812035, 23.58830568688104)).title(getString(R.string.aerodromio)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.10935603117662, 23.488498349170314)).title(getString(R.string.joy_dog_club)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.085807177397065, 23.497308472294627)).title(getString(R.string.hobbytech_track)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.097390282594645, 23.545074746638075)).title(getString(R.string.byzantino_ydragwgeio)).snippet(getString(R.string.this_is_marker_1_s_snippet)))); allMarkers.add(map.addMarker(new MarkerOptions().position(new LatLng(41.10368066471727, 23.55034040268912)).title(getString(R.string.therini_cinema)).snippet(getString(R.string.this_is_marker_1_s_snippet))));