高德地图04--路径规划
来源:互联网 发布:js当前时间格式化 编辑:程序博客网 时间:2024/04/28 10:03
xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.mapp.MainActivity$PlaceholderFragment" > <com.amap.api.maps2d.MapView android:layout_marginTop="5dp" android:id="@+id/map_map01" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="30dp" android:orientation="horizontal"> <TextView android:textSize="15sp" android:layout_width="wrap_content" android:layout_height="fill_parent" android:text="起点 终点:"/> <TextView android:textColor="#FF0000" android:id="@+id/text_address" android:textSize="12sp" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:text="大兴------->通州"/> </LinearLayout> <LinearLayout android:layout_alignParentBottom="true" android:layout_width="fill_parent" android:layout_height="40dp" android:orientation="horizontal"> <Button android:id="@+id/but_bus" android:layout_width="0dp" android:layout_weight="1" android:layout_height="fill_parent" android:text="公交"/> <Button android:id="@+id/but_drive" android:layout_width="0dp" android:layout_weight="1" android:layout_height="fill_parent" android:text="自驾"/> <Button android:id="@+id/but_walk" android:layout_width="0dp" android:layout_weight="1" android:layout_height="fill_parent" android:text="步行"/> </LinearLayout></RelativeLayout>
android代码
package com.example.mapp;import java.util.List;import com.amap.api.location.AMapLocation;import com.amap.api.location.AMapLocationListener;import com.amap.api.location.LocationManagerProxy;import com.amap.api.location.LocationProviderProxy;import com.amap.api.maps2d.AMap;import com.amap.api.maps2d.AMap.OnMapClickListener;import com.amap.api.maps2d.MapView;import com.amap.api.maps2d.model.BitmapDescriptorFactory;import com.amap.api.maps2d.model.LatLng;import com.amap.api.maps2d.overlay.BusRouteOverlay;import com.amap.api.maps2d.overlay.DrivingRouteOverlay;import com.amap.api.maps2d.overlay.WalkRouteOverlay;import com.amap.api.services.core.LatLonPoint;import com.amap.api.services.geocoder.GeocodeResult;import com.amap.api.services.geocoder.GeocodeSearch;import com.amap.api.services.geocoder.GeocodeSearch.OnGeocodeSearchListener;import com.amap.api.services.geocoder.RegeocodeQuery;import com.amap.api.services.geocoder.RegeocodeResult;import com.amap.api.services.route.BusPath;import com.amap.api.services.route.BusRouteResult;import com.amap.api.services.route.DrivePath;import com.amap.api.services.route.DriveRouteResult;import com.amap.api.services.route.RouteSearch;import com.amap.api.services.route.RouteSearch.BusRouteQuery;import com.amap.api.services.route.RouteSearch.DriveRouteQuery;import com.amap.api.services.route.RouteSearch.OnRouteSearchListener;import com.amap.api.services.route.RouteSearch.WalkRouteQuery;import com.amap.api.services.route.WalkPath;import com.amap.api.services.route.WalkRouteResult;import android.support.v4.app.Fragment;import android.telephony.SmsManager;import android.app.Activity;import android.content.Context;import android.location.Location;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;import android.os.Build;public class MainActivity extends Activity implements OnRouteSearchListener { private MapView mapView; private AMap aMap; private Boolean isFirst; private LatLng lat_star; private LatLng lat_end; private TextView text_address; private StringBuffer sb = new StringBuffer(); private DriveRouteQuery query; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_main); mapView = (MapView) findViewById(R.id.map_map01); mapView.onCreate(savedInstanceState); aMap = mapView.getMap(); text_address = (TextView) findViewById(R.id.text_address); findViewById(R.id.but_bus).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { rote("bus"); } }); findViewById(R.id.but_drive).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { rote("drive"); } }); findViewById(R.id.but_walk).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { rote("walk"); } }); isFirst = true; aMap.setOnMapClickListener(new OnMapClickListener() { @Override public void onMapClick(LatLng lat) { if (isFirst) { lat_star = new LatLng(lat.latitude, lat.longitude); CodeToString(lat_star, MainActivity.this); } else { lat_end = new LatLng(lat.latitude, lat.longitude); CodeToString(lat_end, MainActivity.this); } } }); } @Override protected void onResume() { super.onResume(); mapView.onResume(); } @Override protected void onPause() { super.onPause(); mapView.onPause(); } @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); } /** * @param arg0坐标 * @param con * 坐标和字符串地址转换 */ public void CodeToString(LatLng arg0, Context con) { System.out.println("--------------CodeToString---------------------"+ arg0.latitude + "---" + arg0.longitude); GeocodeSearch geo = new GeocodeSearch(con); geo.setOnGeocodeSearchListener(new OnGeocodeSearchListener() { private String address = ""; @Override public void onRegeocodeSearched(RegeocodeResult result, int rCode) { System.out .println("----------onRegeocodeSearched------------------"); if (result != null && result.getRegeocodeAddress() != null && result.getRegeocodeAddress().getFormatAddress() != null) { address = result.getRegeocodeAddress().getFormatAddress(); if (isFirst) { if(sb.length()>2){ sb.delete(0, sb.length() - 1);// 清空 } sb.append(address + "----"); text_address.setText(sb.toString()); System.out.println("------address---aa------------"+address+isFirst); isFirst = false; } else { sb.append(address); text_address.setText(sb.toString()); System.out.println("------address-----bb----------"+address+isFirst); isFirst = true; } } else { System.out.println("坐标转换不成功" + rCode); } } @Override public void onGeocodeSearched(GeocodeResult arg0, int arg1) { System.out.println("--------onGeocodeSearched---------------"); } }); LatLonPoint point = new LatLonPoint(arg0.latitude, arg0.longitude); RegeocodeQuery query = new RegeocodeQuery(point, 100, GeocodeSearch.AMAP); geo.getFromLocationAsyn(query); } /** * 路径规划 */ protected void rote(String str) { System.out.println("-----------------进入路线规划-----------------"); RouteSearch routeSerch = new RouteSearch(MainActivity.this); routeSerch.setRouteSearchListener(MainActivity.this); LatLonPoint start_lat = new LatLonPoint(lat_star.latitude, lat_star.longitude); LatLonPoint end_lat = new LatLonPoint(lat_end.latitude, lat_end.longitude); RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(start_lat, end_lat); if ("bus".equals(str)) { BusRouteQuery query=new BusRouteQuery(fromAndTo,RouteSearch.BusDefault,null,0); routeSerch.calculateBusRouteAsyn(query);// 异步路径规划驾车模式查询 // } else if ("drive".equals(str)) { query = new DriveRouteQuery(fromAndTo, RouteSearch.DrivingDefault, null, null, ""); routeSerch.calculateDriveRouteAsyn(query);// 异步路径规划驾车模式查询 // } else { WalkRouteQuery query=new WalkRouteQuery(fromAndTo, RouteSearch.WalkDefault); routeSerch.calculateWalkRouteAsyn(query);// 异步路径规划驾车模式查询 // } } // 公交 @Override public void onBusRouteSearched(BusRouteResult result, int rCode) { System.out.println("-------------------------公交路径规划回调方法-------------------------"+ rCode + "---"+ result); if(rCode==0){ if(result != null && result.getPaths() != null && result.getPaths().size() > 0){ BusRouteResult busRouteResult=result; BusPath busPath=busRouteResult.getPaths().get(0); aMap.clear(); BusRouteOverlay busRouteOverlay=new BusRouteOverlay(this,aMap, busPath, busRouteResult.getStartPos(), busRouteResult.getTargetPos()); busRouteOverlay.removeFromMap(); busRouteOverlay.addToMap(); busRouteOverlay.zoomToSpan(); }else { Toast.makeText(MainActivity.this, "对不起 没有搜索到相关数据", 0).show(); } }else if (rCode == 27) { Toast.makeText(MainActivity.this, "搜索失败 请检查网络连接", 0).show(); } else if (rCode == 32) { Toast.makeText(MainActivity.this, "验证无效", 0).show(); } else { Toast.makeText(getApplicationContext(), "错误码" + rCode, 0).show(); } } // 自驾 @Override public void onDriveRouteSearched(DriveRouteResult result, int rCode) { System.out.println("-------------------------驾车路径规划回调方法-------------------------"+ rCode + "---"+ result); if (rCode == 0) { if (result != null && result.getPaths() != null && result.getPaths().size() > 0) { DriveRouteResult driveRouteResult = result; DrivePath drivePath = driveRouteResult.getPaths().get(0); aMap.clear();// 清理地图上的所有覆盖物 DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay( this,aMap, drivePath, driveRouteResult.getStartPos(), driveRouteResult.getTargetPos()); drivingRouteOverlay.removeFromMap(); drivingRouteOverlay.addToMap(); drivingRouteOverlay.zoomToSpan(); } else { Toast.makeText(MainActivity.this, "对不起 没有搜索到相关数据", 0).show(); } } else if (rCode == 27) { Toast.makeText(MainActivity.this, "搜索失败 请检查网络连接", 0).show(); } else if (rCode == 32) { Toast.makeText(MainActivity.this, "验证无效", 0).show(); } else { Toast.makeText(getApplicationContext(), "错误码" + rCode, 0).show(); } } // 步行 @Override public void onWalkRouteSearched(WalkRouteResult result, int rCode) { System.out.println("路径规划回调 -------------------------- 步行"); if (rCode == 0) { if (result != null && result.getPaths() != null && result.getPaths().size() > 0) { WalkRouteResult walkRouteResult = result; WalkPath walkPath = walkRouteResult.getPaths().get(0); aMap.clear();// 清理地图上的所有覆盖物 WalkRouteOverlay walkRouteOverlay = new WalkRouteOverlay(this, aMap, walkPath, walkRouteResult.getStartPos(), walkRouteResult.getTargetPos()); walkRouteOverlay.removeFromMap(); walkRouteOverlay.addToMap(); walkRouteOverlay.zoomToSpan(); } else { Toast.makeText(MainActivity.this, "对不起 没有搜索到相关数据", 0).show(); } } else if (rCode == 27) { Toast.makeText(MainActivity.this, "搜索失败 请检查网络连接", 0).show(); } else if (rCode == 32) { Toast.makeText(MainActivity.this, "验证无效", 0).show(); } else { Toast.makeText(getApplicationContext(), "错误码" + rCode, 0).show(); } }}
效果图
0 0
- 高德地图04--路径规划
- 高德地图路径规划
- Android 基于高德地图路径规划
- 高德地图WebAPI : 驾车路径规划
- 高德地图JavascriptAPI:驾车路径规划
- 高德地图---路径规划---语音导航的开发
- iOS高德地图使用-搜索,路径规划
- iOS高德地图使用-搜索,路径规划
- 高德地图驾车路径规划详情获取
- 高德地图简单实现及路径规划
- App外部跳转百度地图,高德地图,进行导航,路径规划等
- 高德地图路线规划
- 高德地图路径回放
- 高德API路径规划
- 高德地图JavaScript API-路径规划——基于amap-js_V1.3
- Android高德地图步行路径规划错乱的问题解决[问题一]
- 高德地图——路线规划
- 高德地图多点线路规划
- 中文乱码解决的4种方式
- ViewPager实现欢迎引导页面
- Linux ipc------System V消息队列
- C#按指定条件在数组中检索元素
- mybatis 配置文件详解
- 高德地图04--路径规划
- 隐藏状态栏
- 1342 Lotto【dfs】
- HDU 4000 Fruit Ninja (树状数组+组合问题)
- [.Net码农]Type.GetProperties 方法-获取实体类 变量
- poj3667 线段树
- 机器学习05(logistic回归)
- openwrt 安装nodogsplash
- android 数据库操作 GreenDAO 第三方开源项目