當前位置:首頁 » 安卓系統 » 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、輸入目的地後,系統會自動進行路線的選擇設置,見下圖,然後點擊【開始導航】就可以了。

熱點內容
蘋果7怎麼給支付寶加密碼 發布:2024-05-04 16:13:12 瀏覽:404
sql培訓視頻 發布:2024-05-04 16:00:59 瀏覽:262
極無雙平新伺服器什麼時候出 發布:2024-05-04 15:50:47 瀏覽:660
c語言千分數 發布:2024-05-04 15:46:31 瀏覽:344
資料庫no 發布:2024-05-04 15:38:00 瀏覽:220
ionic編譯android 發布:2024-05-04 15:20:45 瀏覽:488
雲伺服器在哪買 發布:2024-05-04 15:19:18 瀏覽:85
華為如何用電腦解鎖手機密碼 發布:2024-05-04 14:54:38 瀏覽:574
斐波那契數列的遞歸演算法 發布:2024-05-04 14:34:55 瀏覽:969
數字支付密碼哪裡找 發布:2024-05-04 14:26:50 瀏覽:86