我有记录列表,其中每条记录都有自己的纬度和经度。 基于这些lat和long,我需要在地图上显示这些记录作为引脚。
这是我在地图上显示记录的代码:
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 :(得分:0)
实施GoogleMap.OnMarkerClickListener。
@Override
public boolean onMarkerClick(Marker marker) {
marker.getSnippet();
marker.getTitle();
marker.setDraggable(true);
return false;
}
在标记实例下的给定函数中,您可以获得与单击标记相关的所有内容。
答案 1 :(得分:0)
我通过将Google Play服务更新为
解决了这个问题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将数据设置为标记。
Marker marker = mMap.addMarker(markerOptions);
marker.setTag(ticket);
可以通过以下方式获取:
mMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Ticket ticket = (Ticket) marker.getTag();
} }