问题描述
|
好吧,我是android中的初学者,我需要在设备上更具体地使用地图(折线),我需要执行以下操作。
这是一个网络应用程序,我用来跟踪我所在城市的公交路线和公交车站,而且我被要求在android中做同样的事情!香港专业教育学院一直在检查android的maps api,但在JS api中未找到类似于折线的东西,有没有办法实现这一目标?
我在添加简单的叠加层时没有问题,我一直在检查android开发人员网站中的基本教程,但我不知道如何绘制折线。
解决方法
Android Google Maps API中没有此类API。您只能先列出要绘制的路线的实际GeoPoint,然后在Overlay对象上绘制点和线。没有简单的方法可以做到这一点。
,一种更简单的方法是获取点并扩展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,paintColor);
paintColor.setColor(Color.RED);
canvas.drawLine(pts.get(i-1).x,pts.get(i-1).y,pts.get(i).x,paintColor);
}
}
}
}
当您扩展Imageview并使用xml创建布局时,请不要忘记将整个包放入新的小部件中,例如:
com.Myapp.MyImageView
,FvZ的答案有效,但不是本机方式,地图上有折线,这是一个简单的示例
https://stackoverflow.com/a/21877742/618419
还要看一下Android文档,其中有许多简单而完整的示例:
http://developer.android.com/reference/com/google/android/gms/maps/model/Polyline.html