gpt4 book ai didi

放大时Android MapView覆盖消失

转载 作者:行者123 更新时间:2023-11-30 03:54:50 25 4
gpt4 key购买 nike

我正在开发一个简单的 Android 应用程序,用于在 map 上绘制路线。一切顺利,但我在放大 Samsung Galaxy S2 时遇到问题。它在 Galaxy S3 上运行良好,所以我想知道它是否与低规范设备上的内存管理有关。它在模拟器上也能正常工作。

下面是位于 overlays onDraw 方法中的等效代码,只是为了在此处发布而进行了压缩:

Point current = new Point();
Path path = new Path();
Projection projection = mapView.getProjection();

Iterator<GeoPoint> iterator = pointList.iterator();
if (iterator.hasNext()) {
projection.toPixels(iterator.next(), current);
path.moveTo((float) current.x, (float) current.y);
} else return path;
while(iterator.hasNext()) {
projection.toPixels(iterator.next(), current);
path.lineTo((float) current.x, (float) current.y);
}

Paint roadPaint = new Paint();
roadPaint.setAntiAlias(true);
roadPaint.setStrokeWidth(8.0f);
roadPaint.setColor(Color.BLACK);
roadPaint.setStyle(Paint.Style.STROKE);

canvas.drawPath(path, roadPaint);

它与执行此操作的大多数示例代码并没有太大不同。我只是想知道是否有人可以证实我的怀疑并建议我是否可以在配置或调整方面做任何事情来强制在所有缩放级别进行绘图?

提前致谢。

干杯,弥敦道

最佳答案

问题是您正在为 map View 的特定状态自己绘制叠加层。你应该使用 OverlayItem相反。

OverlayItem 被添加到 MapView overlays 集合,MapView 根据它自己的状态(缩放、位置等)处理所有重新绘制

@Override
public void draw( Canvas canvas, MapView mapView, boolean shadow )
{
super.draw( canvas, mapView, shadow );

int x1 = -1;
int y1 = -1;
int x2 = -1;
int y2 = -1;

Paint paint = new Paint();
paint.setStyle( Paint.Style.STROKE );
paint.setColor( GeoLocation.ROUTE_COLOR );
paint.setStrokeWidth( STROKE_WIDTH );

for ( int i = 0; i < mRouteGeoPoints.size(); i++ )
{
Point point = new Point();
mapView.getProjection().toPixels( geoPoints.get( i ), point );
x2 = point.x;
y2 = point.y;
if ( i > 0 )
{
canvas.drawLine( x1, y1, x2, y2, paint );
}
x1 = x2;
y1 = y2;
}
}

关于放大时Android MapView覆盖消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13513578/

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