gpt4 book ai didi

android - 如何只绘制 map 上可见的标记?

转载 作者:行者123 更新时间:2023-11-29 02:00:01 26 4
gpt4 key购买 nike

我想学习只绘制 map 上可见的叠加项,因为我正在展示一张带有数千个标记的 map 。我知道我必须检查 overlayitem 是否可见,如下所示:

private boolean isLocationVisible(location)
{
Rect currentMapBoundsRect = new Rect();
Point currentDevicePosition = new Point();
GeoPoint deviceLocation = new GeoPoint((int) (location.getLatitude() * 1000000.0), (int) (location.getLongitude() * 1000000.0));

mapView.getProjection().toPixels(deviceLocation, currentDevicePosition);
mapView.getDrawingRect(currentMapBoundsRect);

return currentMapBoundsRect.contains(currentDevicePosition.x, currentDevicePosition.y);

}

然后,如果此方法返回 true,我必须绘制 overlayitem,否则,我不能绘制它。

问题是我无法覆盖OverlayItem中的onDraw,所以我不知道如何实现我的需求。

我应该在我的代码中更改什么以仅绘制 map 上可见的标记?

这是我的 ItemizedOverlayClass:

            public class mItemizedOverlay extends ItemizedOverlay<OverlayItem> {
private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>();
boolean onTapActivated=false;
private Drawable marker = null;
private BusMap map = null;
boolean comingFromFavoriteNameEdit=false;

public BmItemizedOverlay(Drawable defaultMarker, BusMap map) {
super(boundCenterBottom(defaultMarker));
this.map=map;
this.marker=defaultMarker;
}
public mItemizedOverlay(Drawable defaultMarker, BusMap map, boolean onTapActivated) {
super(boundCenterBottom(defaultMarker));
this.map=map;
this.onTapActivated=onTapActivated;
this.marker=defaultMarker;
}

protected OverlayItem createItem(int i){return mOverlays.get(i);}

public int size() {return mOverlays.size();}

public void clear(){mOverlays.clear();}

public void addOverlay(OverlayItem overlay) {
mOverlays.add(overlay);
}
public void setOverlays(ArrayList <OverlayItem> overlays) {
mOverlays=overlays;
populate();
}

public void draw(Canvas canvas, MapView mapView, boolean shadow){
if (mapView.getZoomLevel() > 17){
boundCenterBottom(this.marker);
super.draw(canvas, mapView, false);
}
}
}

最佳答案

你不应该自己处理这个。 ItemizedOverlay 的工作是仅调度和绘制当前存在于可见 map 边界内的标记。是什么让您相信这还没有发生?

如果您认为当前的 Overlay 实现不令人满意,您可能会更幸运地使用您的检查方法来确定何时从 Overlay 中添加或删除项目,而不是试图覆盖绘制调用。

关于android - 如何只绘制 map 上可见的标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13145564/

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