当前位置:首页 » 安卓系统 » android绘制路线

android绘制路线

发布时间: 2022-09-09 03:33:29

⑴ android怎么实现可交互的地铁线路图

公交线路:轨道交通2号线 → 轨道交通3号线,全程约22.9公里 1、从重庆市步行约610米,到达曾家岩站 2、乘坐轨道交通2号线,经过1站, 到达牛角沱站 3、步行约280米,换乘轨道交通3号线 4、乘坐轨道交通3号线,经过15站, 到达学堂湾站 5、步行约630米,到达重庆汉海极地海洋公园 公交线路:轨道交通3号线,全程约22.5公里 1、从重庆市步行约1.5公里,到达牛角沱站 2、乘坐轨道交通3号线,经过15站, 到达学堂湾站 3、步行约630米,到达重庆汉海极地海洋公园

⑵ Android使用高德API实现轨迹追踪(作业要自己写哦)

每间隔10秒,同时距离移动大于1米的情况下,记录一次位置信息,在地图上绘制60秒的行动轨迹。

高德API的引用可见我上一篇博客: https://www.jianshu.com/p/4b773727e42c
在上一篇博客已经实现了地图的显示,因此需要实现的功能如下:
1.记录位置
2.在地图上绘制轨迹

在AndroidManifest.xml的application标签中声明service组件,每个app拥有自己单独的定位service。声明如下:

主要是定位+回调函数绘制路线。

(这里不加也可以,但是有可能会出现报错但还能运行或者是闪退的情况)

不知道是不是定位不精确的原因,短距离步行显示的差距有点大,也有可能是第一次定位和第二次定位会出现偏差导致了第一个线段的不准确。

远距离的轨迹跟踪还是比较准确的。

⑶ 高德android导航开发,要怎么自定义路线。。

目前高德地图里自定义路线还不完善,现在只可以设置3个点。一个是起点,一个是途经点,还有一个是终点,我之前也是想设计自定义路线,发现设不设都无所谓,你怎么走系统都会为你规划到正确的路线上。你用高德地图走习惯了,他也有记忆功能,知道你平时喜欢走的路线,以后就会按你习惯的路线进行规划路线了。希望能帮到你。

⑷ android版地图实现多点路线规划怎么解决

用地图无忧应用

在手机上标注出点的位置

然后用电脑端进行智能路线规划后

规划出的线路会展示在手机上

还可以自定义添加线路


⑸ android在google map上画出导航路线图,本人是刚入行的菜鸟,期望高手能够指点,有代码请发给我。

刚开始接触的话,多看看android sdk的例子,代码都有,应该对你有帮助!

⑹ 百度地图android线路规划怎么用

网络地图Android线路规划只需几步即可完成,在使用地图前,最好打开GPS,以获得更准确的位置信息;线路规划步骤如下:

  1. 打开手机网络地图【如果没有需要安装】

  2. 进入网络地图后,在底部有个“路线”点击路线

  3. 进入路线后可以在顶部选择自己的交通工具,依次为公交、自驾、步行、骑车

  4. 以自驾为例点击后,在下面的起始地点填上点击搜索即可

如下图:

⑺ Android中Path类的lineTo方法和quadTo方法画线的区别

当我们需要在屏幕上形成画线时,Path类的应用是必不可少的,而Path类的lineTo和quadTo方法实现的绘制线路形式也是不一样的,下面就以代码的实现来直观的探究这两个方法的功能实现区别;
1. Path--->quadTo(float x1, float y1, float x2, float y2):
该方法的实现是当我们不仅仅是画一条线甚至是画弧线时会形成平滑的曲线,该曲线又称为"贝塞尔曲线"(Bezier curve),其中,x1,y1为控制点的坐标值,x2,y2为终点的坐标值;
贝塞尔曲线的形成,就比如我们把一条橡皮筋拉直,橡皮筋的头尾部对应起点和终点,然后从拉直的橡皮筋中选择任意一点(除头尾对应的点外)扯动橡皮筋形成的弯曲形状,而那个扯动橡皮筋的点就是控制点;
下就面以一个Demo来结合理解quadTo函数的应用,代码如下:
1).自定义View:

[java] view plain
package com.feixun.hu.pt;

import android.content.Context;
import android.gesture.GestureStroke;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.Paint.Style;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

public class DrawingWithBezier extends View
{
private float mX;
private float mY;

private final Paint mGesturePaint = new Paint();
private final Path mPath = new Path();

public DrawingWithBezier(Context context)
{
super(context);
mGesturePaint.setAntiAlias(true);
mGesturePaint.setStyle(Style.STROKE);
mGesturePaint.setStrokeWidth(5);
mGesturePaint.setColor(Color.WHITE);
}

@Override
public boolean onTouchEvent(MotionEvent event)
{
// TODO Auto-generated method stub
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
touchDown(event);
break;
case MotionEvent.ACTION_MOVE:
touchMove(event);
}
//更新绘制
invalidate();
return true;
}

@Override
protected void onDraw(Canvas canvas)
{
// TODO Auto-generated method stub
super.onDraw(canvas);
//通过画布绘制多点形成的图形
canvas.drawPath(mPath, mGesturePaint);
}

//手指点下屏幕时调用
private void touchDown(MotionEvent event)
{

//mPath.rewind();
//重置绘制路线,即隐藏之前绘制的轨迹
mPath.reset();
float x = event.getX();
float y = event.getY();

mX = x;
mY = y;
//mPath绘制的绘制起点
mPath.moveTo(x, y);
}

//手指在屏幕上滑动时调用
private void touchMove(MotionEvent event)
{
final float x = event.getX();
final float y = event.getY();

final float previousX = mX;
final float previousY = mY;

final float dx = Math.abs(x - previousX);
final float dy = Math.abs(y - previousY);

//两点之间的距离大于等于3时,生成贝塞尔绘制曲线
if (dx >= 3 || dy >= 3)
{
//设置贝塞尔曲线的操作点为起点和终点的一半
float cX = (x + previousX) / 2;
float cY = (y + previousY) / 2;

//二次贝塞尔,实现平滑曲线;previousX, previousY为操作点,cX, cY为终点
mPath.quadTo(previousX, previousY, cX, cY);

//第二次执行时,第一次结束调用的坐标值将作为第二次调用的初始坐标值
mX = x;
mY = y;
}
}

}

2).MainActivity:

[java] view plain
package com.feixun.hu.pt;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(new MySurfaceView(this));
setContentView(new DrawingWithBezier(this));
//setContentView(new DrawingWithoutBezier(this));
}
}

该Demo实现用户在手机屏幕上滑动手指时,可根据手指滑动的位置绘制出相应的线条,类似输入法手势的绘制,所以代码中的画笔Paint命名为mGesturePaint;
比如,我们在屏幕上绘制S这个图案,则形成的图案如下:

2. Path--->lineTo(float x, float y) :

该方法实现的仅仅是两点连成一线的绘制线路,这样,当我们用这个方法绘制曲线时,缺陷就出来了;下面的例子,同样还是和上面的Demo差不多,只不过Path调用的是lineTo方法,如下:
1). 自定义View:

[java] view plain
package com.feixun.hu.pt;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Bitmap.Config;
import android.graphics.Paint.Style;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

public class DrawingWithoutBezier extends View
{
private float mX;
private float mY;

private final Paint mGesturePaint = new Paint();
private final Path mPath = new Path();

public DrawingWithoutBezier(Context context)
{
super(context);
mGesturePaint.setAntiAlias(true);
mGesturePaint.setStyle(Style.STROKE);
mGesturePaint.setStrokeWidth(5);
mGesturePaint.setColor(Color.WHITE);
}

@Override
public boolean onTouchEvent(MotionEvent event)
{
// TODO Auto-generated method stub
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
touchDown(event);
break;
case MotionEvent.ACTION_MOVE:
touchMove(event);
}
//更新绘制
invalidate();
return true;
}

@Override
protected void onDraw(Canvas canvas)
{
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawPath(mPath, mGesturePaint);
}

//手指点下屏幕时调用
private void touchDown(MotionEvent event)
{

//mPath.rewind();
mPath.reset();
float x = event.getX();
float y = event.getY();

mX = x;
mY = y;

//mPath绘制的绘制起点
mPath.moveTo(x, y);
}

//手指在屏幕上滑动时调用
private void touchMove(MotionEvent event)
{
final float x = event.getX();
final float y = event.getY();

final float previousX = mX;
final float previousY = mY;

final float dx = Math.abs(x - previousX);
final float dy = Math.abs(y - previousY);

//两点之间的距离大于等于3时,连接连接两点形成直线
if (dx >= 3 || dy >= 3)
{
//两点连成直线
mPath.lineTo(x, y);

//第二次执行时,第一次结束调用的坐标值将作为第二次调用的初始坐标值
mX = x;
mY = y;
}
}

}

2).MainActivity:

[java] view plain
package com.feixun.hu.pt;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//setContentView(new MySurfaceView(this));
//setContentView(new DrawingWithBezier(this));
setContentView(new DrawingWithoutBezier(this));
}
}

同样地,用该例子绘制S形图案,形成的图案如下:

结论 :对比前面quadTo方法绘制的S,lineTo绘制的S在弯曲部分很明显的不能形成平滑的弯曲,会出现明显的两点形成一线的突痕。可能图片看的不是清楚,自行运行这个Demo,然后在屏幕上绘制弯曲曲线或者圆,对比查看他们的形状区别就一目了然;
3. SurfaceView绘制贝塞尔曲线:
上面的绘制图案方式都是基于View来绘制,当然,我们也可以结合SurfaceView和Rect来实现绘制贝塞尔曲线,这样绘制的效果相对会比较好,而且效率也相对较高,毕竟相对SurfaceView而言,在动态绘制点线方面较之View更加出色;

⑻ 百度地图android版怎么记录行车路线并在地图上划线保存

安卓版网络地图木有行车路线记录和地图划线保存功能。

⑼ Android上百度地图的两个坐标点之间怎么画一条线.求大神解答

1、首先,打开网络地图客户端,在首页中的下面点击【导航】,见下图红色框部分;

2、点击【导航】打开的新页面,在【输入目的地】一栏中输入你要导航的终点,见下图:

3、输入目的地后,系统会自动进行路线的选择设置,见下图,然后点击【开始导航】就可以了。

热点内容
电信光纤上传限制 发布:2024-05-18 16:08:05 浏览:909
sql中的limit 发布:2024-05-18 16:05:57 浏览:895
启动ug时服务器无响应是怎么回事 发布:2024-05-18 15:48:24 浏览:372
小数除法的计算法则 发布:2024-05-18 15:36:52 浏览:530
安卓网卡免驱动如何实现 发布:2024-05-18 15:25:15 浏览:860
8加6算法 发布:2024-05-18 15:04:25 浏览:738
名图16款尊享什么配置 发布:2024-05-18 14:55:37 浏览:585
我的世界怎样刷出32k服务器 发布:2024-05-18 14:32:32 浏览:565
c语言程序设计江宝钏 发布:2024-05-18 14:32:22 浏览:780
右击文件夹总是转圈圈 发布:2024-05-18 14:31:10 浏览:696