Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.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
Android多段线地图api_Android_Maps_Polyline - Fatal编程技术网

Android多段线地图api

Android多段线地图api,android,maps,polyline,Android,Maps,Polyline,嗯,我是安卓系统中的乞丐,我需要在设备上更具体地使用地图(折线),我需要这样做。 这是一个我用来追踪我所在城市的公交线路和公交站点的网络应用,我被要求在android上做同样的事情!我一直在检查android的地图api,但在JS api中没有发现任何类似于多段线的东西,有没有办法做到这一点 我在添加简单的覆盖图方面没有问题。我一直在查看android开发者网站的基本教程,但我不知道如何绘制多段线 Android谷歌地图API中没有这样的API。只能首先列出要绘制的路线的实际地质点,然后在覆盖

嗯,我是安卓系统中的乞丐,我需要在设备上更具体地使用地图(折线),我需要这样做。

这是一个我用来追踪我所在城市的公交线路和公交站点的网络应用,我被要求在android上做同样的事情!我一直在检查android的地图api,但在JS api中没有发现任何类似于多段线的东西,有没有办法做到这一点


我在添加简单的覆盖图方面没有问题。我一直在查看android开发者网站的基本教程,但我不知道如何绘制多段线

Android谷歌地图API中没有这样的API。只能首先列出要绘制的路线的实际地质点,然后在覆盖对象上绘制点和线。没有简单的方法可以做到这一点

Android谷歌地图API中没有这样的API。只能首先列出要绘制的路线的实际地质点,然后在覆盖对象上绘制点和线。没有简单的方法可以做到这一点

一种更简单的方法是获取点并扩展将显示图像的ImageView来绘制点,而不是只需要传递要绘制的点

在我的项目中,我做到了:

public class ImageDraw extends ImageView{
private Paint   mPaint = new Paint();
List<Point> pts = new ArrayList<Point>() ;

public ImageDraw(Context context) {
    super(context);

}
//used to send the location of the points to draw on the screen
//must be called before every redraw to update the points on the screen
public void SetPointsToDraw(List<Point> pts)
{
    this.pts = pts;
}


public ImageDraw(Context context, AttributeSet attrs)
{
    super(context,attrs);
}
public ImageDraw(Context context, AttributeSet attrs, int defStyle)
{
    super(context, attrs, defStyle);
}

@Override
public void onDraw(Canvas canvas)
{
    super.onDraw(canvas);

    Paint paintColor = mPaint;
    paintColor.setColor(Color.YELLOW);
    paintColor.setStrokeWidth(3);


    if(pts.size() > 0)
    {
        canvas.drawCircle(pts.get(0).x, pts.get(0).y, 7, paintColor);   
    }
    if (pts.size() > 1)
    {
        for (int i = 1 ; i < pts.size(); i++) {
            paintColor.setColor(Color.YELLOW);
            canvas.drawCircle(pts.get(i).x, pts.get(i).y, 7, paintColor);
            paintColor.setColor(Color.RED);
            canvas.drawLine(pts.get(i-1).x, pts.get(i-1).y, pts.get(i).x, pts.get(i).y, paintColor);
        }
    }


}
公共类ImageDraw扩展了ImageView{
私有油漆mPaint=新油漆();
List pts=new ArrayList();
公共ImageDraw(上下文){
超级(上下文);
}
//用于发送要在屏幕上绘制的点的位置
//必须在每次重新绘制之前调用,以更新屏幕上的点
公共无效设置点STODRAW(列表pts)
{
this.pts=pts;
}
公共图像绘制(上下文、属性集属性)
{
超级(上下文,attrs);
}
公共ImageDraw(上下文上下文、属性集属性、int-defStyle)
{
超级(上下文、属性、定义样式);
}
@凌驾
公共空白onDraw(画布)
{
super.onDraw(帆布);
油漆颜色=mPaint;
paintColor.setColor(Color.YELLOW);
油漆颜色。设置行程宽度(3);
如果(pts.size()>0)
{
画布.画圈(pts.get(0.x,pts.get(0.y,7,paintColor));
}
如果(pts.size()>1)
{
对于(int i=1;i
}

当您扩展Imageview并使用xml创建布局时,请不要忘记将新小部件的整个包放在下面:
com.Myapp.MyImageView

一种更简单的方法是获取点并扩展将显示图像的ImageView来绘制点,而不是只需要传递要绘制的点

在我的项目中,我做到了:

public class ImageDraw extends ImageView{
private Paint   mPaint = new Paint();
List<Point> pts = new ArrayList<Point>() ;

public ImageDraw(Context context) {
    super(context);

}
//used to send the location of the points to draw on the screen
//must be called before every redraw to update the points on the screen
public void SetPointsToDraw(List<Point> pts)
{
    this.pts = pts;
}


public ImageDraw(Context context, AttributeSet attrs)
{
    super(context,attrs);
}
public ImageDraw(Context context, AttributeSet attrs, int defStyle)
{
    super(context, attrs, defStyle);
}

@Override
public void onDraw(Canvas canvas)
{
    super.onDraw(canvas);

    Paint paintColor = mPaint;
    paintColor.setColor(Color.YELLOW);
    paintColor.setStrokeWidth(3);


    if(pts.size() > 0)
    {
        canvas.drawCircle(pts.get(0).x, pts.get(0).y, 7, paintColor);   
    }
    if (pts.size() > 1)
    {
        for (int i = 1 ; i < pts.size(); i++) {
            paintColor.setColor(Color.YELLOW);
            canvas.drawCircle(pts.get(i).x, pts.get(i).y, 7, paintColor);
            paintColor.setColor(Color.RED);
            canvas.drawLine(pts.get(i-1).x, pts.get(i-1).y, pts.get(i).x, pts.get(i).y, paintColor);
        }
    }


}
公共类ImageDraw扩展了ImageView{
私有油漆mPaint=新油漆();
List pts=new ArrayList();
公共ImageDraw(上下文){
超级(上下文);
}
//用于发送要在屏幕上绘制的点的位置
//必须在每次重新绘制之前调用,以更新屏幕上的点
公共无效设置点STODRAW(列表pts)
{
this.pts=pts;
}
公共图像绘制(上下文、属性集属性)
{
超级(上下文,attrs);
}
公共ImageDraw(上下文上下文、属性集属性、int-defStyle)
{
超级(上下文、属性、定义样式);
}
@凌驾
公共空白onDraw(画布)
{
super.onDraw(帆布);
油漆颜色=mPaint;
paintColor.setColor(Color.YELLOW);
油漆颜色。设置行程宽度(3);
如果(pts.size()>0)
{
画布.画圈(pts.get(0.x,pts.get(0.y,7,paintColor));
}
如果(pts.size()>1)
{
对于(int i=1;i
}

当您扩展Imageview并使用xml创建布局时,请不要忘记将新小部件的整个包放在下面:
com.Myapp.MyImageView

FvZ的答案是可行的,但不是原生方式,地图上有多段线,一个简单的例子

再看一看Android文档,它们有许多简单且组合良好的示例:

FvZ的答案是可行的,但不是本地方式,地图上有多段线,一个简单的例子

再看一看Android文档,它们有许多简单且组合良好的示例: