android– 地图聚类 – 最大缩放标记仍然聚集

android– 地图聚类 – 最大缩放标记仍然聚集,第1张

概述我正在使用androidmapsutils在googlemapsapiv2上聚类标记.它工作正常,但当我添加2000个标记时,在最大缩放时它仍然是聚类的(标记仍然有数字):这是我用标记填充地图的方法:publicvoidgetRiverData(Stringstate,Stringtype){URL=getResources().getString(R.strin

我正在使用android maps utils在Google maps API v2上聚类标记.它工作正常,但当我添加2000个标记时,在最大缩放时它仍然是聚类的(标记仍然有数字):

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

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 one rrorResponse(VolleyError error) {                    // error Object                    error.printstacktrace();                }            });    AppController.getInstance().addToRequestQueue(simpleRequest);}

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

解决方法:

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

public class InfoMarkerRenderer extends DefaultClusterRenderer<MyCustomMarker> {public InfoMarkerRenderer(Context context, GoogleMap map, ClusterManager<MyCustomMarker> clusterManager) {    super(context, map, clusterManager);    //constructor}@OverrIDeprotected voID onBeforeClusterItemRendered(final MyCustomMarker infomarker, MarkerOptions markerOptions) {      // you can change marker options}@OverrIDeprotected boolean shouldRenderAsCluster(Cluster cluster) {    return cluster.getSize() > 5; // if markers <=5 then not clustering}}
总结

以上是内存溢出为你收集整理的android – 地图聚类 – 最大缩放标记仍然聚集全部内容,希望文章能够帮你解决android – 地图聚类 – 最大缩放标记仍然聚集所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1120086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存