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パーツで何を変更する必要がありますか?エラーは発生していませんが、機能していません。他に何を追加または変更する必要がありますか?
どんな助けも大歓迎です!
マーカークリックイベント
クリックしてマーカーにスナップしないAndroid map v2
上記の投稿からの引用
OnMarkerClickListener
を使用して、マーカーのクリックイベントをリッスンできます。このリスナーを地図に設定するには、GoogleMap.setOnMarkerClickListener(OnMarkerClickListener)を呼び出します。ユーザーがマーカーをクリックすると、onMarkerClick(Marker)が呼び出され、マーカーが引数として渡されます。このメソッドは、イベントを消費したかどうかを示すブール値を返します(つまり、デフォルトの動作を抑制したい)。 falseを返す場合、カスタム動作に加えてデフォルト動作が発生します。マーカークリックイベントのデフォルトの動作は、情報ウィンドウ(利用可能な場合)を表示し、マーカーが地図の中央にくるようにカメラを移動することです。
マーカーで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; }) ;
このコードは、メーカーのクリックイベントを処理し、いくつかの情報を含む新しいレイアウト(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");
}
}
});
}
イベント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;
}
});
幸運