Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-在MapView上作为覆盖绘制路径_Java_Android_Overlay_Android Mapview_Draw - Fatal编程技术网

Java Android-在MapView上作为覆盖绘制路径

Java Android-在MapView上作为覆盖绘制路径,java,android,overlay,android-mapview,draw,Java,Android,Overlay,Android Mapview,Draw,我有一个扩展Overlay并实现Overlay.snapable的类。我已覆盖其绘制方法: @Override public void draw(Canvas canvas, MapView mv, boolean shadow) { Projection projection = mv.getProjection(); ArrayList<GeoPoint> geoPoints = new ArrayList<GeoPoint>(); //Cre

我有一个扩展Overlay并实现Overlay.snapable的类。我已覆盖其绘制方法:

@Override
public void draw(Canvas canvas, MapView mv, boolean shadow)
{
    Projection projection = mv.getProjection();
    ArrayList<GeoPoint> geoPoints = new ArrayList<GeoPoint>();
    //Creating geopoints - ommited for readability
    Path p = new Path();
    for (int i = 0; i < geoPoints.size(); i++) {
    if (i == geoPoints.size() - 1) {
        break;
    }
    Point from = new Point();
    Point to = new Point();
    projection.toPixels(geoPoints.get(i), from);
    projection.toPixels(geoPoints.get(i + 1), to);
    p.moveTo(from.x, from.y);
    p.lineTo(to.x, to.y);
    }
    Paint mPaint = new Paint();
    mPaint.setStyle(Style.FILL);
    mPaint.setColor(0xFFFF0000);
    mPaint.setAntiAlias(true);
    canvas.drawPath(p, mPaint);
    super.draw(canvas, mv, shadow);
}
@覆盖
公共虚空绘制(画布、MapView mv、布尔阴影)
{
投影=mv.getProjection();
ArrayList地质点=新建ArrayList();
//创建地理点-为便于阅读而推荐
路径p=新路径();
对于(int i=0;i
正如你所看到的,我在地图上列出了一系列的点,我想让它们形成一个多边形

现在的问题是,当我将“paint style”设置为“FILL”或“FILL_”和“_STROKE”时,屏幕上不会显示任何内容,但当我将其设置为“just STROKE”并设置“STROKE width”时,它会意外地绘制它应该绘制的内容

现在,我在寻找解决方案,但什么都没有出现。你能告诉我,如果我在代码本身中遗漏了一些东西,或者在覆盖画布上绘制时有一些约束吗


谢谢你做了几件事。您应该使用
p.moveTo(from.x,from.y)仅一次,即,当您第一次想要这样做时

尝试此操作以设置用于绘制多边形的
绘制
对象的属性

polygonPaint = new Paint();
polygonPaint.setStrokeWidth(2); 
polygonPaint.setStyle(Paint.Style.STROKE);
polygonPaint.setAntiAlias(true); 

希望这有帮助

谢谢你的回答,问题是呼叫moveTo的次数太多了。