gpt4 book ai didi

android - map 聚类 - 最大缩放标记仍然聚类

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:59 25 4
gpt4 key购买 nike

我正在使用 android maps utils 对 google maps api v2 上的标记进行聚类。它工作正常,但是当我添加 2000 多个标记时,在最大缩放时它仍然是聚集的(标记仍然有数字):

2000+ markers max zoom

这是我用标记填充 map 的方法:

public void getRiverData(String state, String type) {
URL = getResources().getString(R.string.base_url) + state + "/" + type
+ getResources().getString(R.string.end_url);
SimpleXmlRequest<XMLData> simpleRequest = new SimpleXmlRequest<XMLData>(
URL, XMLData.class, new Response.Listener<XMLData>() {

@Override
public void onResponse(XMLData response) {

// Initialize the manager with the context and the map.
// (Activity extends context, so we can pass 'this' in
// the constructor.)
mClusterManager = new ClusterManager<MarkerItem>(
getActivity(), map);

mClusterManager.setRenderer(new ClusterRenderer(
getActivity(), map, mClusterManager));

// response Object
waterItemsList = response.getNews();

for (News item : waterItemsList) {
if (item.getRiver_name() != null
&& item.getRiver_name() != "") {

water_level_value = item.getWater_level_value();

if (water_level_value != null
&& !water_level_value.equals(0)
&& !water_level_value.equals("")) {

MarkerItem offsetItem = new MarkerItem(item);
mClusterManager.addItem(offsetItem);

}

map.setOnMarkerClickListener(mClusterManager);

map.setInfoWindowAdapter(new InfoWindowAdapter() {

@Override
public View getInfoWindow(Marker marker) {

return null;
}

@Override
public View getInfoContents(Marker marker) {

try {
View v = getActivity()
.getLayoutInflater()
.inflate(
R.layout.marker_info,
null);
TextView title = (TextView) v
.findViewById(R.id.tvMarkerTitle);
TextView info = (TextView) v
.findViewById(R.id.tvMarkerInfo);

title.setText(marker.getTitle()
.toString());
info.setText(marker.getSnippet()
.toString());
return v;
} catch (Exception e) {
// kliknięcie w cluster
return null;

}

}
});

}

}

map.setOnCameraChangeListener(mClusterManager);

map.setOnInfoWindowClickListener(mClusterManager);

mClusterManager.cluster();

}

}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// error Object
error.printStackTrace();
}
});

AppController.getInstance().addToRequestQueue(simpleRequest);
}

谁能帮帮我?为什么它不起作用?

最佳答案

您可以扩展 DefaultClusterRenderer 类并将最小标记设置为聚类。

public class InfoMarkerRenderer extends DefaultClusterRenderer<MyCustomMarker> {

public InfoMarkerRenderer(Context context, GoogleMap map, ClusterManager<MyCustomMarker> clusterManager) {
super(context, map, clusterManager);
//constructor
}

@Override
protected void onBeforeClusterItemRendered(final MyCustomMarker infomarker, MarkerOptions markerOptions) {
// you can change marker options
}

@Override
protected boolean shouldRenderAsCluster(Cluster cluster) {
return cluster.getSize() > 5; // if markers <=5 then not clustering
}
}

关于android - map 聚类 - 最大缩放标记仍然聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24159284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com