2016-04-17 26 views
1

google maps api v3でマーカーをクリックすると警告ダイアログレイアウトを表示する方法を検索しました。私はここでstackoverflowのコードを見つけたが、私にとってはうまく機能していない。 はここマーカーをクリックすると警告ダイアログが表示される

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; 
    } 


} 

マップは罰金開き、私のマーカーを示す私のマップクラスです。しかし、私がクリックすると、警告ダイアログは表示されません。 ありがとうございます!

答えて

1

ブロック内のコードが実行される場合、このメソッドはtrueを返す必要があります。このメソッドがfalseを返すと、clickイベントは登録したリスナーに渡されません。

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; 
    } 
関連する問題