web-dev-qa-db-ja.com

Android Google Map-マーカーをクリックすると、新しいアクティビティまたは大きなウィンドウが開きます

OnMarkerClickListenerの実装に関するヘルプを探していますが、何も機能していません。これは下の私のマーカーであり、クリックすると色(水色)のみが変化します。より多くの情報を入力できるように、より大きなウィンドウを開くために探しています。これは可能ですか?

     googlemap.addMarker(new MarkerOptions()
    .position(new LatLng(49.378,-0.3904))
    .title("Hello World")
    .snippet("This is my test app")    
    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));

マーカーは地図上で正常に機能しますが、マーカーをクリックして、新しいアクティビティ/ページまたは大きなウィンドウを開くために、これまで以上に簡単に作業できるようにしたいと思います。私はアプリを作るのが本当に初心者なので、うまく機能する例を手に入れた人はリンクやコードを書いてください。

前もって感謝します!

編集:

提案されたチュートリアルから、MainActivity.Javaの一部を変更しました。

OnMarkerClickListenerに追加し、未実装のメソッドをPublicクラスに追加することを選択しました

  public class MainActivity extends Activity implements LocationListener, OnMarkerClickListener {

Private void setUpMap()の下に、コードに追加しました:private Marker myMarker、setonMarkerclickリスナー、myMarker =、:

       private Marker myMarker;
         {
googlemap.setOnMarkerClickListener(this);

myMarker = googlemap.addMarker(new MarkerOptions()
    .position(new LatLng(LatLng))
    .title("Hello World")
    .snippet("My First App")    
    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE)));

 }

一番下の未実装のメソッドには:

   @Override
   public boolean onMarkerClick(Marker arg0) {
// TODO Auto-generated method stub 

return false;

パブリックBoolean OnMarkerClickパーツで何を変更する必要がありますか?エラーは発生していませんが、機能していません。他に何を追加または変更する必要がありますか?

どんな助けも大歓迎です!

22
user1977908

マーカークリックイベント

クリックしてマーカーにスナップしないAndroid map v2

上記の投稿からの引用

OnMarkerClickListenerを使用して、マーカーのクリックイベントをリッスンできます。このリスナーを地図に設定するには、GoogleMap.setOnMarkerClickListener(OnMarkerClickListener)を呼び出します。ユーザーがマーカーをクリックすると、onMarkerClick(Marker)が呼び出され、マーカーが引数として渡されます。このメソッドは、イベントを消費したかどうかを示すブール値を返します(つまり、デフォルトの動作を抑制したい)。 falseを返す場合、カスタム動作に加えてデフォルト動作が発生します。マーカークリックイベントのデフォルトの動作は、情報ウィンドウ(利用可能な場合)を表示し、マーカーが地図の中央にくるようにカメラを移動することです。

https://developers.google.com/maps/documentation/Android/reference/com/google/Android/gms/maps/GoogleMap.OnMarkerClickListener

マーカーでOnMarkerClickListenerを使用します。

コードスニペットのリンクを確認してください

Google Maps API v2:マーカーをクリック可能にする方法

例:携帯電話で動作する

 
マーカーのソース、宛先、
 GoogleMap mMap; 
 
 mMap =((MapFragment)getFragmentManager()。findFragmentById(R.id.map ))。getMap(); 
 source = mMap.addMarker(new MarkerOptions()
 .position(sc)
 .title( "MyHome")
 snippet( "Bangalore")
 .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin))); 
 
 destination = mMap.addMarker(new MarkerOptions()
 .position(lng)
 .title( "MapleBear Head Office")
 .snippet( "Jayanager")
 .icon(BitmapDescriptorFactory.fromResource(R.drawable.pin ))); 
 
 mMap.setOnMarkerClickListener(marker-> {
 if(marker.getTitle()。equals( "MyHome"))//マーカーソースがクリックされた場合
 Toast.makeText(MainActivity.this、marker.getTitle()、Toast.LENGTH_SHORT).show(); // display toast 
 return true; 
}) ; 
 
31
Raghunandan

このコードは、メーカーのクリックイベントを処理し、いくつかの情報を含む新しいレイアウト(XML)をロードします。

/**
 * adding individual markers, displaying text on on marker click on a
 * bubble, action of on marker bubble click
 */
private final void addLocationsToMap() {
    int i = 0;
    for (Stores store : storeList) {
        LatLng l = new LatLng(store.getLatitude(), store.getLongtitude());

        MarkerOptions marker = new MarkerOptions()
                .position(l)
                .title(store.getStoreName())
                .snippet("" + i)
                .icon(BitmapDescriptorFactory
                        .defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
        googleMap.addMarker(marker);
        ++i;
    }

    googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {

        @Override
        public void onInfoWindowClick(Marker marker) {

            try {
                popUpWindow.setVisibility(View.VISIBLE);
                Stores store = storeList.get(Integer.parseInt(marker
                        .getSnippet()));

                // set details
                email.setText(store.getEmail());
                phoneNo.setText(store.getPhone());
                address.setText(store.getAddress());

                // setting test value to phone number
                tempString = store.getPhone();
                SpannableString spanString = new SpannableString(tempString);
                spanString.setSpan(new UnderlineSpan(), 0,
                        spanString.length(), 0);
                phoneNo.setText(spanString);

                // setting test value to email
                tempStringemail = store.getEmail();

                SpannableString spanString1 = new SpannableString(tempStringemail);
                spanString1.setSpan(new UnderlineSpan(), 0, spanString1.length(), 0);
                email.setText(spanString1);

                storeLat = store.getLatitude();
                storelng = store.getLongtitude();

            } catch (ArrayIndexOutOfBoundsException e) {
                Log.e("ArrayIndexOutOfBoundsException", " Occured");
            }

        }
    });

}
10
TharakaNirmana

イベントClick in a marketが必要な場合、このコードはソリューションです。

private GoogleMap mGoogleMap;


mGoogleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
        {

            @Override
            public boolean onMarkerClick(Marker arg0) {
                if(arg0 != null && arg0.getTitle().equals(markerOptions2.getTitle().toString())); // if marker  source is clicked
                    Toast.makeText(menu.this, arg0.getTitle(), Toast.LENGTH_SHORT).show();// display toast
                return true;
            }

        });

幸運

6
David Hackro