亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android實現在map上畫出路線的方法

2020-04-11 11:28:19
字體:
來源:轉載
供稿:網友

本文實例講述了Android實現在map上畫出路線的方法。分享給大家供大家參考。具體如下:

最近在搞在地圖上畫出路線圖,經過一段時間的摸索,終于搞明白了,其實也挺簡單的,寫個類繼承Overlay,并重寫draw方法,在draw方法中畫出 path即可。對于Overaly,在地圖上標記某個點或者畫線之類的就要使用overlay,overlay相當于一個覆蓋物,覆蓋在地圖上,這個覆蓋物要自己實現所以要繼承Overlay。

MapActivity.java如下:

package net.blogjava.mobile.map; import java.util.List; import Android.app.AlertDialog; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Point; import android.location.Address; import android.location.Geocoder; import android.os.Bundle; import android.view.Menu; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import com.google.android.maps.Projection; public class Main extends MapActivity { private GeoPoint gpoint1, gpoint2, gpoint3;// 連線的點 @Override public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.main);  MapView mapView = (MapView) findViewById(R.id.mapview);  mapView.setClickable(true);  mapView.setBuiltInZoomControls(true);  MapController mapController = mapView.getController();  mapView.setTraffic(true);// 交通圖  // mapView.setSatellite(true);//衛星圖  // mapView.setStreetView(true);//街景  MyOverlay myOverlay = new MyOverlay();  mapView.getOverlays().add(myOverlay);  mapController.setZoom(15);// 初始放大倍數  gpoint1 = new GeoPoint((int) (24.477384 * 1000000),  (int) (118.158216 * 1000000));  gpoint2 = new GeoPoint((int) (24.488967 * 1000000),  (int) (118.144277 * 1000000));  gpoint3 = new GeoPoint((int) (24.491091 * 1000000),  (int) (118.136781 * 1000000));  mapController.animateTo(gpoint1); } @Override protected boolean isRouteDisplayed() {  // TODO Auto-generated method stub  return false; } class MyOverlay extends Overlay {  @Override  public void draw(Canvas canvas, MapView mapView, boolean shadow) {  // TODO Auto-generated method stub  super.draw(canvas, mapView, shadow);  // 畫筆  Paint paint = new Paint();  paint.setColor(Color.RED);  paint.setDither(true);  paint.setStyle(Paint.Style.STROKE);  paint.setStrokeJoin(Paint.Join.ROUND);  paint.setStrokeCap(Paint.Cap.ROUND);  paint.setStrokeWidth(2);  Projection projection = mapView.getProjection();  Point p1 = new Point();  Point p2 = new Point();  Point p3 = new Point();  projection.toPixels(gpoint1, p1);  projection.toPixels(gpoint2, p2);  projection.toPixels(gpoint3, p3);  Path path = new Path();  path.moveTo(p1.x, p1.y);  path.lineTo(p2.x, p2.y);  path.lineTo(p3.x, p3.y);  canvas.drawPath(path, paint);// 畫出路徑  } } }

main.xml如下:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"  android:orientation="vertical" android:layout_width="fill_parent"  android:layout_height="fill_parent">  <com.google.android.maps.MapView  android:id="@+id/mapview" android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:apiKey="0IB7Kn70qp1LT216Hhb-jmHJ8GLTie4p63O77KQ" /> </LinearLayout>

最后別忘了加權限 :
 
<uses-permission Android:name="android.permission.INTERNET"/>
 
在<applacation></applacation>之間加<uses-library Android:name="com.google.android.maps" />

繪制路線圖:

/** * 通過解析google map返回的xml,在map中畫路線圖*/ public void drawRoute(){ String url = "http://maps.google.com/maps/api/directions/xml?origin=23.055291,113.391802" + "&destination=23.046604,113.397510&sensor=false&mode=walking";  HttpGet get = new HttpGet(url);  String strResult = "";  try {   HttpParams httpParameters = new BasicHttpParams();   HttpConnectionParams.setConnectionTimeout(httpParameters, 3000);   HttpClient httpClient = new DefaultHttpClient(httpParameters);   HttpResponse httpResponse = null;   httpResponse = httpClient.execute(get);   if (httpResponse.getStatusLine().getStatusCode() == 200){   strResult = EntityUtils.toString(httpResponse.getEntity());   }  } catch (Exception e) {   return;  }  if (-1 == strResult.indexOf("<status>OK</status>")){   Toast.makeText(this, "獲取導航路線失敗!", Toast.LENGTH_SHORT).show();   this.finish();   return;  }  int pos = strResult.indexOf("<overview_polyline>");  pos = strResult.indexOf("<points>", pos + 1);  int pos2 = strResult.indexOf("</points>", pos);  strResult = strResult.substring(pos + 8, pos2);  List<GeoPoint> points = decodePoly(strResult);  MyOverLay mOverlay = new MyOverLay(points);  List<Overlay> overlays = mMapView.getOverlays();  overlays.add(mOverlay);  if (points.size() >= 2){   mMapController.animateTo(points.get(0));  }  mMapView.invalidate();  } /** * 解析返回xml中overview_polyline的路線編碼 * * @param encoded * @return */ private List<GeoPoint> decodePoly(String encoded) {  List<GeoPoint> poly = new ArrayList<GeoPoint>();  int index = 0, len = encoded.length();  int lat = 0, lng = 0;  while (index < len) {   int b, shift = 0, result = 0;   do {   b = encoded.charAt(index++) - 63;   result |= (b & 0x1f) << shift;   shift += 5;   } while (b >= 0x20);   int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));   lat += dlat;   shift = 0;   result = 0;   do {   b = encoded.charAt(index++) - 63;   result |= (b & 0x1f) << shift;   shift += 5;   } while (b >= 0x20);   int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));   lng += dlng;   GeoPoint p = new GeoPoint((int) (((double) lat / 1E5) * 1E6),(int) (((double) lng / 1E5) * 1E6));   poly.add(p);  }  return poly; }

希望本文所述對大家的Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久久久中文字幕| 亚洲成人av在线播放| 国产精品成人va在线观看| 国产精品av在线| 欧美激情在线狂野欧美精品| 欧美精品情趣视频| 国产精品高清免费在线观看| 2019日本中文字幕| 亚洲欧美日韩爽爽影院| 国产精品久久久久久久久借妻| 久久天天躁夜夜躁狠狠躁2022| 国产激情综合五月久久| 国产亚洲美女精品久久久| 国产极品精品在线观看| 久久亚洲精品小早川怜子66| 日本视频久久久| 伊人一区二区三区久久精品| 91精品国产高清久久久久久91| www国产精品com| 亚洲日韩中文字幕| 92福利视频午夜1000合集在线观看| 最近2019中文字幕mv免费看| 成人做爽爽免费视频| 爱福利视频一区| 精品久久久中文| 深夜成人在线观看| 97色伦亚洲国产| 日韩免费高清在线观看| 亚洲精品成人免费| 久久成人精品一区二区三区| 不卡av电影在线观看| 久久久女女女女999久久| 97超视频免费观看| 国产精品18久久久久久首页狼| 成人伊人精品色xxxx视频| 久久精品国产免费观看| 国产精品久久久久久久久借妻| 91精品久久久久久久久久| 国产精品成久久久久三级| 亚洲欧美一区二区三区在线| 亚洲三级黄色在线观看| 国产欧美最新羞羞视频在线观看| 26uuu亚洲伊人春色| 97国产精品人人爽人人做| 日韩美女在线观看一区| 国产精品一二区| 91中文精品字幕在线视频| 成人网中文字幕| 国产精品久久久久久久久免费| 日韩在线高清视频| 一区二区三区 在线观看视| 国内揄拍国内精品少妇国语| 久久久久久久久网站| 成人激情视频在线| 成人美女免费网站视频| 日韩黄在线观看| 国产一区二区激情| 久久久亚洲精品视频| 欧美午夜xxx| 久久露脸国产精品| 亚洲第一在线视频| 91老司机在线| 狠狠综合久久av一区二区小说| 久久色在线播放| 欧美日韩日本国产| 精品呦交小u女在线| 久久夜精品香蕉| 欧美老女人www| 成人伊人精品色xxxx视频| 国产欧美婷婷中文| 欧美丝袜一区二区三区| 两个人的视频www国产精品| 亚洲欧美日韩一区在线| 亚洲精品理论电影| 亚洲国产第一页| 国产精品日韩欧美| 69av视频在线播放| 国产成人精品电影| 色妞久久福利网| 精品无人区太爽高潮在线播放| 亚洲视频自拍偷拍| 亚洲天堂男人天堂| 欧美另类精品xxxx孕妇| 精品一区电影国产| 久久综合免费视频影院| 亚洲色图欧美制服丝袜另类第一页| 九九精品在线播放| 成人免费网站在线观看| 久久久亚洲天堂| 91香蕉国产在线观看| 亚洲欧美变态国产另类| 久久久久久久999| 精品一区二区三区电影| 亚洲视频自拍偷拍| 亚洲高清色综合| 欧美一级在线亚洲天堂| 欧美午夜www高清视频| 红桃av永久久久| 麻豆精品精华液| 91超碰caoporn97人人| 国内精久久久久久久久久人| 96国产粉嫩美女| 国产精品草莓在线免费观看| 在线丨暗呦小u女国产精品| 国产成人精品优优av| 欧美日韩中文字幕| 国产精品爱久久久久久久| 亚洲天堂av综合网| 国产欧美日韩高清| 日韩中文娱乐网| 久久久电影免费观看完整版| 亚洲男人天堂2023| 国产精品扒开腿做爽爽爽视频| 精品福利樱桃av导航| 一本色道久久88亚洲综合88| 国产精品手机播放| 精品福利在线观看| 在线观看精品国产视频| 久久久免费av| 中文字幕亚洲综合久久筱田步美| 国产精品欧美日韩| 国产日产欧美精品| 国产精品综合久久久| 欧美成人精品在线视频| 日韩欧美综合在线视频| 久久成人精品一区二区三区| 美日韩精品免费观看视频| 18一19gay欧美视频网站| 久久男人资源视频| 亚洲香蕉在线观看| 欧美黑人又粗大| 久久久久久久久久亚洲| 亚洲精品综合精品自拍| 久久久久久久久久久91| 久久亚洲国产精品成人av秋霞| 狠狠躁夜夜躁人人爽超碰91| 精品中文字幕在线观看| 免费91麻豆精品国产自产在线观看| 国外成人在线视频| 国产精品视频1区| 日韩专区在线观看| 国产精品都在这里| 亚洲欧美国产精品专区久久| 色噜噜国产精品视频一区二区| 亚洲综合最新在线| 欧美日韩国产影院| 日韩在线观看免费高清完整版| 精品久久久久久国产91| 亚洲最大的成人网| 在线观看精品国产视频| 欧美乱大交xxxxx另类电影| 欧美肥老太性生活视频| 国产精欧美一区二区三区| 国产亚洲欧美aaaa| 久久久久成人精品| 国产精品中文在线| 一区二区亚洲精品国产| 啊v视频在线一区二区三区| 日韩在线播放一区| 久久久999国产精品| 不用播放器成人网| 国产精品美女www爽爽爽视频| 亚洲情综合五月天| 亚洲人成在线观看网站高清|