我正面临一个问题......
我正在尝试使用谷歌地图api在android上制作带有标记的地图,我还设法使用 clusterManager 对它们进行聚类,到目前为止一切都很好用,但问题是当我尝试制作<针对别针的强>定制信息,我可以获得标记的标题,片段和位置,但其他信息(如标记标记,ID等)似乎是不可能的。
我认为问题是ClusterItem它只覆盖标题,片段和位置。
有人可以帮我解决这个问题吗?
这是我的代码:
这是我从 firebase:
FirebaseDatabase database = FirebaseDatabase.getInstance();
places = database.getReference("Places");
places.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
map.clear();
mClusterManager.clearItems();
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Double latitude = (Double) postSnapshot.child("Lat").getValue();
Double longitude = (Double) postSnapshot.child("Long").getValue();
String name = postSnapshot.getKey();
String score = postSnapshot.child("score").getValue().toString();
String photoUrl = postSnapshot.child("photoUrl").getValue().toString();
String description = postSnapshot.child("description").getValue().toString();
MyMission mMission = new MyMission(latitude,longitude,name,score);
mClusterManager.addItem(mMission);
mClusterManager.cluster();
}
}
@Override
public void onCancelled(DatabaseError error) {
}
});
这是clusterItem类:
public class MyMission implements ClusterItem {
private LatLng mPosition;
private String mTitle;
private String mSnippet;
public MyMission(double lat, double lng) {
mPosition = new LatLng(lat, lng);
}
public MyMission(double lat, double lng, String title, String snippet) {
mPosition = new LatLng(lat, lng);
mTitle = title;mSnippet = snippet;
}
@Override
public LatLng getPosition() {
return mPosition;
}
@Override
public String getTitle() {
return mTitle;
}
@Override
public String getSnippet() {
return mSnippet;
}
}
这是InfoWindowAdapter:
public class CustomMarkerInfoWindow implements GoogleMap.InfoWindowAdapter {
private Activity context;
public CustomMarkerInfoWindow(Activity context) {
this.context = context;
}
@Override
public View getInfoWindow(Marker marker) {
return null;
}
@Override
public View getInfoContents(Marker marker) {
View view = context.getLayoutInflater().inflate(R.layout.custom_marker_info_window, null);
TextView title = view.findViewById(R.id.TitleTextView);
TextView distance = view.findViewById(R.id.distanceValueTextView);
TextView points = view.findViewById(R.id.pointsValueTextView);
title.setText(marker.getTitle());
distance.setText("2101");
points.setText(marker.getSnippet());
return view;
}
如果可以改变“InfowindowAdapter:the “getInfoContents(Marker marker)”类似于:“getInfoContents(MyMission marker)”....
答案 0 :(得分:0)
我认为群集管理器上的这个教程可能对你有所帮助,因为它在标记点击上创建了一个自定义弹出窗口,我认为这就是你所追求的。 Work with ClusterManager