0

我有記錄列表,每個記錄都有自己的經度和緯度。 基於這些緯度和長度,我需要在地圖上顯示這些記錄作爲引腳。在谷歌地圖上填充針腳並點擊每個針腳項目打開活動

這是我的代碼,在地圖上顯示的記錄:

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-:

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

並且可被取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' 

GoogleMap的規定,以與上述更新這樣做getTag()和setTag()方法。

並實現OnMapReadyCallback方法。

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

在onCreate()中添加getMapAsync(this)。

現在我可以設置數據標記使用getTag在我上面的循環代碼。

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

} }