2016-04-17 6 views
1

Ich suchte nach einem Warndialoglayout, wenn ich auf einen Marker auf Google Maps api v3 klicke. Ich habe einen Code hier auf Stackoverflow gefunden, aber für mich funktioniert es nicht. Hier ist meine Karte KlasseAlarmdialog-Layout beim Klicken auf Marker

package com.myapp; 
import android.app.AlertDialog; 
import android.app.FragmentManager; 
import android.content.Context; 
import android.content.Intent; 
import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.AdView; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.GooglePlayServicesUtil; 
import android.graphics.Color; 
import android.location.LocationManager; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ImageButton; 
import android.widget.Toast; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 
import com.google.android.gms.maps.model.PolylineOptions; 


public class MyClass extends FragmentActivity implements OnMarkerClickListener { 
    private GoogleMap googleMap; 
    private int mapType = GoogleMap.MAP_TYPE_NORMAL; 
    private Marker marker1; 
    ImageButton imageButton1; 
    @SuppressWarnings("deprecation") 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.map); 
     AdView mAdView = (AdView) findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     mAdView.loadAd(adRequest); 
     imageButton1 = (ImageButton) findViewById(R.id.imageButton1); 

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

    // Enabling MyLocation Layer of Google Map 
     googleMap.setMyLocationEnabled(true); 
    // Getting LocationManager object from System Service LOCATION_SERVICE 
     LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
     googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 

       LatLng sLatLng12 = new LatLng(34.0522, 118.2437); 
       marker1 = googleMap.addMarker(new MarkerOptions() 
       .position(sLatLng12) 
       .title("Marker title") 
       .snippet("Marker snippet") 
       .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon))); 





    public boolean onMarkerClick(Marker marker1) { 
     if(this.marker1.equals(marker1)){ 
     AlertDialog.Builder alertadd = new AlertDialog.Builder(MyClass.this); 
     LayoutInflater factory = LayoutInflater.from(MyClass.this); 
     final View view = factory.inflate(R.layout.dialog_layout, null); 
     alertadd.setView(view); 
     alertadd.show(); 
     } 
     return false; 
    } 


} 

Die Karte öffnet sich fein und mein Marker zeigt. Aber wenn ich auf klicke, wird kein Alarmdialog angezeigt. Vielen Dank im Voraus!

Antwort

1

Die Methode sollte true zurückgeben, wenn der Code innerhalb von if block ausgeführt wird. Wenn die Methode false zurückgibt, wird das click-Ereignis nicht an den Listener übergeben, den Sie registriert haben.

public boolean onMarkerClick(Marker marker1) { 
     if(this.marker1.equals(marker1)){ 
     AlertDialog.Builder alertadd = new AlertDialog.Builder(MyClass.this); 
     LayoutInflater factory = LayoutInflater.from(MyClass.this); 
     final View view = factory.inflate(R.layout.dialog_layout, null); 
     alertadd.setView(view); 
     alertadd.show(); 
     return true; 
     } 
     return false; 
    } 
Verwandte Themen