0

私は各レコードが独自の緯度と経度を持つレコードのリストを持っています。 これらの緯度と経度に基づいて、これらのレコードを地図上にピンとして表示する必要があります。GoogleMapのピン配置と各ピンアイテムのクリック時のアクティビティの開始

これは、地図上のレコードを表示するために私のコードです:ここでは

private GoogleMap mMap; 
List<Ticket> tickets = ticketDB.getMyTickets(ticketIDs, mCurrSortKey, mCurrSortOrder, currDate); 
    if (mMap != null) { 

     LatLngBounds.Builder bounds = new LatLngBounds.Builder(); 

     for (int i = 0; i < tickets.size(); i++) { 
      Ticket ticket = tickets.get(i); 
      if (ticket != null && ticket.Latitude > 0) { 
       MarkerOptions markerOptions = new MarkerOptions(); 
       markerOptions.position(new LatLng(ticket.Latitude, ticket.Longitude)); 
       bounds.include(new LatLng(ticket.Latitude, ticket.Longitude)); 
       markerOptions.title(ticket.TicketNumber); 
       mMap.addMarker(markerOptions); 
       mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(markerOptions.getPosition(),15)); 
} 
} 

、すべてのチケットのレコードがデータベースからフェッチされ、成功した地図上にマークされている(そこに10枚のチケットがあるので、10本のピンがあるとします。

私の問題は、クリックしたレコードのデータを送信するために必要な各マーカーをクリックすることです。どのレコードがクリックされたかを知る方法は?

+0

https://stackoverflow.com/questions/14226453/google-maps-api-v2-how-to- make-marker-clickable –

+0

これは役立つかもしれません:https://stackoverflow.com/questions/30601892/android-google-maps-how-to-make-each-marker-infowindow-open-different-activity –

答えて

0

GoogleMap.OnMarkerClickListenerを実装します。

@Override 
public boolean onMarkerClick(Marker marker) { 
    marker.getSnippet(); 
    marker.getTitle(); 
    marker.setDraggable(true); 
    return false; 
} 

ここで、マーカーインスタンスの下の所定の機能では、クリックされたマーカーに関連するすべてが取得されます。

0

私は

compile 'com.google.android.gms:play-services:9.4.0' 

GoogleマップにGoogle Playのサービスを更新することでこれを解決し上記アップデートでそうするためにのgetTag()とsetTag()メソッドを提供します。

であり、OnMapReadyCallbackメソッドを実装しています。

@Override 
public void onMapReady(GoogleMap googleMap) { 
    GoogleMap mMap = googleMap; 
} 

onCreate()でgetMapAsync(this)を追加します。

私は上記のforループコードでgetTagを使ってデータをマーカーに設定できます。

Marker marker = mMap.addMarker(markerOptions); 
marker.setTag(ticket); 

によって取り出すことができる。

mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { 
      @Override 
      public void onInfoWindowClick(Marker marker) { 
       Ticket ticket = (Ticket) marker.getTag(); 

}}

関連する問題