谷歌地图标记聚类广告自定义Infowindow适配器如何为clusterItem(标记)设置标记

时间:2018-02-06 19:14:50

标签: android google-maps cluster-computing infowindow markers

我正面临一个问题...... 我正在尝试使用谷歌地图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)”....

1 个答案:

答案 0 :(得分:0)

我认为群集管理器上的这个教程可能对你有所帮助,因为它在标记点击上创建了一个自定义弹出窗口,我认为这就是你所追求的。 Work with ClusterManager