2017-03-11 3 views
1

Ich bin beschäftigt mit dem Erstellen einer Anwendung in Android Studio, die Maps API verwendet.
Ich habe erfolgreich OnInfoWindowClickListener zu meiner Google Map erstellt. Ich habe zwei verschiedene Markierungen, die ich auf meiner Google Map gesetzt habe, aber ich möchte schließlich Tausende von Markierungen setzen.
Wenn ein Benutzer auf das Infofenster klickt, muss es eine neue Aktivität öffnen.

Wenn beispielsweise ein Benutzer auf "Markierung A" klickt, muss "Aktivität A" geöffnet werden. Oder wenn ein Benutzer auf "Markierung B" klickt, muss "Aktivität B" geöffnet werden. Oder wenn ein Benutzer auf "Markierung C" klickt, muss "Aktivität C" geöffnet werden.

Ich habe versucht, die "if-Anweisung & else if-Anweisung" in meinem Code zu verwenden, aber wenn ich auf das Infofenster des Markers klicke, passiert nichts?
So öffnen Sie verschiedene Aktivitäten abhängig von OnInfoWindowClick

package com.msp.googlemapsproject; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 

import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
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 MainActivity extends Activity { 

    static final LatLng CapeTown = new LatLng(-29.759933, 30.801030); 
    static final LatLng Durban = new LatLng(-29.858680, 31.021840); 
    private GoogleMap googleMap; 

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

     try{ 

      if (googleMap == null) { 

       googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 

      } 

      googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); 
      googleMap.setMyLocationEnabled(true); 
      googleMap.setTrafficEnabled(true); 
      googleMap.setIndoorEnabled(true); 
      googleMap.setBuildingsEnabled(true); 
      googleMap.getUiSettings().setZoomControlsEnabled(true); 

      final Marker marker_CapeTown = googleMap.addMarker(new MarkerOptions().position(CapeTown).title("Cape Town")); 
      final Marker marker_Durban = googleMap.addMarker(new MarkerOptions().position(Durban).title("Durban")); 

      googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 

       @Override 
       public void onInfoWindowClick(Marker marker) { 
        if (googleMap.equals("Durban")) { 
         Intent intent = new Intent(MainActivity.this, Durban.class); 
         startActivity(intent); 
        } 

        else if (googleMap.equals("Cape Town")) { 
         Intent intent = new Intent(MainActivity.this, CapeTown.class); 
         startActivity(intent); 
        } 
       } 
      }); 

     } catch (Exception e) { 

      e.printStackTrace(); 
     } 
    } 
} 

Antwort

2

Sie überprüfen, wie dies in der if-Klausel:

if (googleMap.equals("Durban")) { 
     Intent intent = new Intent(MainActivity.this, Durban.class); 
     startActivity(intent); 
} 

, aber Sie sollten auf der Markierung der public void onInfoWindowClick(Marker marker) Methode überprüfen.

etwas tun, wie folgt aus:

if (marker.getTitle().equals("Durban")) { 
     Intent intent = new Intent(MainActivity.this, Durban.class); 
     startActivity(intent); 
} 
+0

Thank you so much. In den letzten Wochen habe ich online nach einer Antwort gesucht, schätze es! Code funktioniert! – MSP

Verwandte Themen