在Android MapView中动态绘制多个地质点之间的线
我正在开发一个应用程序,该应用程序在MapView上有一些自定义覆盖图,表示船只。选择船只时,我会在地图上显示它以前的位置,同样是自定义的覆盖项目,我想用一条线将它们连接起来 我在这里看到的一些相关问题通过覆盖Draw方法和在Draw方法中硬编码地质点坐标得到了解决。这对我一点帮助都没有,因为我有来自不同船只的许多点,并且无法将它们全部硬编码到绘图中 是否有一种简单的方法可以在用于显示自定义覆盖的for循环内的地质点之间绘制一条线在Android MapView中动态绘制多个地质点之间的线,android,line,android-mapview,Android,Line,Android Mapview,我正在开发一个应用程序,该应用程序在MapView上有一些自定义覆盖图,表示船只。选择船只时,我会在地图上显示它以前的位置,同样是自定义的覆盖项目,我想用一条线将它们连接起来 我在这里看到的一些相关问题通过覆盖Draw方法和在Draw方法中硬编码地质点坐标得到了解决。这对我一点帮助都没有,因为我有来自不同船只的许多点,并且无法将它们全部硬编码到绘图中 是否有一种简单的方法可以在用于显示自定义覆盖的for循环内的地质点之间绘制一条线 提前谢谢。使用地图视图中的投影,将地质点转换为“屏幕”点。之后,
提前谢谢。使用
地图视图中的投影
,将地质点转换为“屏幕”点。之后,您可以使用Path
绘制所需的线。应使用path.moveTo(x,y)
指定第一个点,使用path.lineTo(x,y)
指定其余点。最后调用canvas.drawPath(path)
,就完成了
下面是my draw()方法的代码,该方法围绕一组点绘制多边形。请注意,您不必像我在代码中那样使用path.close()
public void draw(android.graphics.Canvas canvas, MapView mapView, boolean shadow){
if(shadow){
if(isDrawing == false){
return;
}
Projection proj = mapView.getProjection();
boolean first = true;
/*Clear the old path at first*/
path.rewind();
/* The first tap */
Paint circlePaint = new Paint();
Point tempPoint = new Point();
for(GeoPoint point: polygon){
proj.toPixels(point, tempPoint);
if(first){
path.moveTo(tempPoint.x, tempPoint.y);
first = false;
circlePaint.setARGB(100, 255, 117, 0);
circlePaint.setAntiAlias(true);
canvas.drawCircle(tempPoint.x, tempPoint.y, FIRST_CIRCLE_RADIOUS, circlePaint);
}
else{
path.lineTo(tempPoint.x, tempPoint.y);
circlePaint.setARGB(100, 235, 0, 235);
circlePaint.setAntiAlias(true);
canvas.drawCircle(tempPoint.x, tempPoint.y, CIRCLE_RADIOUS, circlePaint);
}
}
/* If indeed is a polygon just close the perimeter */
if(polygon.size() > 2){
path.close();
}
canvas.drawPath(path, polygonPaint);
super.draw(canvas, mapView, shadow);
}
}
为什么你认为你需要硬编码地质点?好的,这确实很有帮助。谢谢!