日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

百度地图综合

發布時間:2024/7/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 百度地图综合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文主要包括百度地圖API的綜合應用,主要內容如下

  • 地圖圖層展示,包括熱力圖與實時路況圖
  • 添加覆蓋物,包括圖片,文字,折線等
  • 地圖控制,包括俯視,旋轉,放大,縮小等
  • 定位,并且用圖標標示出來
  • POI檢索,檢索出范圍內的興趣點
  • 公交線路查詢
  • 路線規劃,包括駕車,公交,步行。
  • 主界面

    package com.zj.mapall;import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView;/*** 程序啟動引導頁,選擇不同的功能進入不同的界面* * @author ys**/ public class LaunchActivity extends Activity {private ListView listview;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_launch);listview = (ListView) findViewById(R.id.activity_listview);init();}/*** 初始化listview列表*/private void init() {final Class[] clazz = { BasisMapActivity.class,AddOverlayActivity.class, MapControllActivity.class,LocationActivity.class,PoiSearchActivity.class,BusLineSearchActivity.class,RoutePlanningActivity.class};String arr[] = { "地圖圖層展示" ,"添加覆蓋物" ,"地圖控制 ","定位","POI檢索","公交線路查詢","路線規劃"};ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, arr);listview.setAdapter(adapter);listview.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {startActivity(new Intent(LaunchActivity.this, clazz[position]));}});} }

    注意,加載地圖前應初始化SDKInitializer,可放在Application中初始化

    package com.zj.mapall;import com.baidu.mapapi.SDKInitializer;import android.app.Application;public class MyApplication extends Application{@Overridepublic void onCreate() {// TODO Auto-generated method stubsuper.onCreate();SDKInitializer.initialize(getApplicationContext());}}

    基礎地圖展示

    package com.zj.mapall;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button;import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView;public class BasisMapActivity extends Activity implements OnClickListener {// 百度地圖控件private MapView mMapView = null;// 百度地圖對象private BaiduMap bdMap;// 普通地圖private Button normalMapBtn;// 衛星地圖private Button satelliteMapBtn;// 實時路況交通圖private Button trafficMapBtn;// 熱力圖private Button headMapBtn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_basis_map);init();}/*** 初始化方法*/private void init() {mMapView = (MapView) findViewById(R.id.bmapview);mMapView.showZoomControls(false);// 不顯示默認的縮放控件MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);bdMap = mMapView.getMap();bdMap.setMapStatus(msu);normalMapBtn = (Button) findViewById(R.id.normal_map_btn);satelliteMapBtn = (Button) findViewById(R.id.satellite_map_btn);trafficMapBtn = (Button) findViewById(R.id.traffic_map_btn);headMapBtn = (Button) findViewById(R.id.heat_map_btn);normalMapBtn.setOnClickListener(this);satelliteMapBtn.setOnClickListener(this);trafficMapBtn.setOnClickListener(this);headMapBtn.setOnClickListener(this);//normalMapBtn.setEnabled(false);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.normal_map_btn:bdMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);normalMapBtn.setEnabled(false);satelliteMapBtn.setEnabled(true);break;case R.id.satellite_map_btn:bdMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);satelliteMapBtn.setEnabled(false);normalMapBtn.setEnabled(true);break;case R.id.traffic_map_btn:if (!bdMap.isTrafficEnabled()) {bdMap.setTrafficEnabled(true);trafficMapBtn.setText("關閉實時路況");} else {bdMap.setTrafficEnabled(false);trafficMapBtn.setText("打開實時路況");}break;case R.id.heat_map_btn:if (!bdMap.isBaiduHeatMapEnabled()) {bdMap.setBaiduHeatMapEnabled(true);headMapBtn.setText("關閉熱力圖");} else {bdMap.setBaiduHeatMapEnabled(false);headMapBtn.setText("打開熱力圖");}break;}}@Overrideprotected void onResume() {super.onResume();mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();mMapView.onPause();}@Overrideprotected void onDestroy() {mMapView.onDestroy();mMapView = null;super.onDestroy();}}

    參考鏈接:

    Android百度地圖開發(一)之初體驗 - crazy_jack - 博客頻道 - CSDN.NET

    添加覆蓋物實現

    package com.zj.mapall;import java.util.ArrayList; import java.util.List;import com.baidu.mapapi.map.ArcOptions; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.BitmapDescriptorFactory; import com.baidu.mapapi.map.CircleOptions; import com.baidu.mapapi.map.DotOptions; import com.baidu.mapapi.map.GroundOverlayOptions; import com.baidu.mapapi.map.InfoWindow; import com.baidu.mapapi.map.InfoWindow.OnInfoWindowClickListener; import com.baidu.mapapi.map.MapPoi; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.Marker; import com.baidu.mapapi.map.MarkerOptions; import com.baidu.mapapi.map.OverlayOptions; import com.baidu.mapapi.map.PolygonOptions; import com.baidu.mapapi.map.PolylineOptions; import com.baidu.mapapi.map.Stroke; import com.baidu.mapapi.map.TextOptions; import com.baidu.mapapi.map.BaiduMap.OnMapClickListener; import com.baidu.mapapi.map.BaiduMap.OnMapDoubleClickListener; import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener; import com.baidu.mapapi.map.BaiduMap.OnMarkerDragListener; import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.model.LatLngBounds; import com.baidu.mapapi.search.core.SearchResult; import com.baidu.mapapi.search.geocode.GeoCodeResult; import com.baidu.mapapi.search.geocode.GeoCoder; import com.baidu.mapapi.search.geocode.OnGetGeoCoderResultListener; import com.baidu.mapapi.search.geocode.ReverseGeoCodeOption; import com.baidu.mapapi.search.geocode.ReverseGeoCodeResult;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast;/*** 添加覆蓋物(marker、polygon、text、polyline、dot、circle、arc、ground、)* 地圖的單擊事件、雙擊事件、marker的拖拽事件 + 地理編碼與反地理編碼* * @author ys**/ public class AddOverlayActivity extends Activity implements OnClickListener {// 百度地圖控件private MapView mMapView = null;// 百度地圖對象private BaiduMap bdMap;// 覆蓋物按鈕private Button overlayBtn;// markerprivate Marker marker1;// 標記顯示第幾個覆蓋物 1->marker 2->polygon 3->text 4->GroundOverlay(地形圖圖層) 5->dot// 6->circle 7->arc 8->polylineprivate int overlayIndex = 0;// 經緯度private double latitude = 39.9401752;private double longitude = 116.400244;// 初始化全局 bitmap 信息,不用時及時 recycle// 構建marker圖標BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.icon_marka);// GroundOptionsBitmapDescriptor bitmap2 = BitmapDescriptorFactory.fromResource(R.drawable.csdn_blog);@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_add_overlay);mMapView = (MapView) findViewById(R.id.bmapview);MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);bdMap = mMapView.getMap();bdMap.setMapStatus(msu);// 對marker覆蓋物添加點擊事件bdMap.setOnMarkerClickListener(new OnMarkerClickListener() {@Overridepublic boolean onMarkerClick(Marker arg0) {if (arg0 == marker1) {final LatLng latLng = arg0.getPosition();// 將經緯度轉換成屏幕上的點// Point point =// bdMap.getProjection().toScreenLocation(latLng);Toast.makeText(AddOverlayActivity.this, latLng.toString(),Toast.LENGTH_SHORT).show();}return false;}});overlayBtn = (Button) findViewById(R.id.overlay_btn);overlayBtn.setOnClickListener(this);/*** 地圖單擊事件*/bdMap.setOnMapClickListener(new OnMapClickListener() {@Overridepublic boolean onMapPoiClick(MapPoi arg0) {return false;}@Overridepublic void onMapClick(LatLng latLng) {displayInfoWindow(latLng);}});/*** 地圖雙擊事件*/bdMap.setOnMapDoubleClickListener(new OnMapDoubleClickListener() {@Overridepublic void onMapDoubleClick(LatLng arg0) {}});/*** Marker拖拽事件*/bdMap.setOnMarkerDragListener(new OnMarkerDragListener() {@Overridepublic void onMarkerDragStart(Marker arg0) {}@Overridepublic void onMarkerDragEnd(Marker arg0) {Toast.makeText(AddOverlayActivity.this,"拖拽結束,新位置:" + arg0.getPosition().latitude + ", "+ arg0.getPosition().longitude,Toast.LENGTH_LONG).show();reverseGeoCode(arg0.getPosition());}@Overridepublic void onMarkerDrag(Marker arg0) {}});}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.overlay_btn:switch (overlayIndex) {case 0:overlayBtn.setText("顯示多邊形覆蓋物");addMarkerOverlay();break;case 1:overlayBtn.setText("顯示文字覆蓋物");addPolygonOptions();break;case 2:overlayBtn.setText("顯示地形圖圖層覆蓋物");addTextOptions();break;case 3:overlayBtn.setText("顯示折線覆蓋物");addGroundOverlayOptions();break;case 4:overlayBtn.setText("顯示圓點覆蓋物");addPolylineOptions();break;case 5:overlayBtn.setText("顯示圓(空心)覆蓋物");addDotOptions();break;case 6:overlayBtn.setText("顯示折線覆蓋物");addCircleOptions();break;case 7:overlayBtn.setText("顯示marker覆蓋物");addArcOptions();break;}overlayIndex = (overlayIndex + 1) % 8;break;}}/*** 添加標注覆蓋物*/private void addMarkerOverlay() {bdMap.clear();// 定義marker坐標點LatLng point = new LatLng(latitude, longitude);// 構建markerOption,用于在地圖上添加markerOverlayOptions options = new MarkerOptions()//.position(point)// 設置marker的位置.icon(bitmap)// 設置marker的圖標.zIndex(9)// 設置marker的所在層級.draggable(true);// 設置手勢拖拽// 在地圖上添加marker,并顯示marker1 = (Marker) bdMap.addOverlay(options);}/*** 添加多邊形覆蓋物*/private void addPolygonOptions() {bdMap.clear();// 定義多邊形的五個頂點LatLng pt1 = new LatLng(latitude + 0.02, longitude);LatLng pt2 = new LatLng(latitude, longitude - 0.03);LatLng pt3 = new LatLng(latitude - 0.02, longitude - 0.01);LatLng pt4 = new LatLng(latitude - 0.02, longitude + 0.01);LatLng pt5 = new LatLng(latitude, longitude + 0.03);List<LatLng> points = new ArrayList<LatLng>();points.add(pt1);points.add(pt2);points.add(pt3);points.add(pt4);points.add(pt5);//PolygonOptions polygonOptions = new PolygonOptions();polygonOptions.points(points);polygonOptions.fillColor(0xAAFFFF00);polygonOptions.stroke(new Stroke(2, 0xAA00FF00));bdMap.addOverlay(polygonOptions);}/*** 添加文字覆蓋物*/private void addTextOptions() {bdMap.clear();LatLng latLng = new LatLng(latitude, longitude);TextOptions textOptions = new TextOptions();textOptions.bgColor(0xAAFFFF00) // 設置文字覆蓋物背景顏色.fontSize(28) // 設置字體大小.fontColor(0xFFFF00FF)// 設置字體顏色.text("我在這里啊!!!!") // 文字內容.rotate(-30) // 設置文字的旋轉角度.position(latLng);// 設置位置bdMap.addOverlay(textOptions);}/*** 添加地形圖圖層*/private void addGroundOverlayOptions() {bdMap.clear();LatLng southwest = new LatLng(latitude - 0.01, longitude - 0.012);// 西南LatLng northeast = new LatLng(latitude + 0.01, longitude + 0.012);// 東北LatLngBounds bounds = new LatLngBounds.Builder().include(southwest).include(northeast).build();// 得到一個地理范圍對象GroundOverlayOptions groundOverlayOptions = new GroundOverlayOptions();groundOverlayOptions.image(bitmap2);// 顯示的圖片groundOverlayOptions.positionFromBounds(bounds);// 顯示的位置groundOverlayOptions.transparency(0.7f);// 顯示的透明度bdMap.addOverlay(groundOverlayOptions);}/*** 添加折線覆蓋物*/private void addPolylineOptions() {bdMap.clear();// 點LatLng pt1 = new LatLng(latitude + 0.01, longitude);LatLng pt2 = new LatLng(latitude, longitude - 0.01);LatLng pt3 = new LatLng(latitude - 0.01, longitude - 0.01);LatLng pt5 = new LatLng(latitude, longitude + 0.01);List<LatLng> points = new ArrayList<LatLng>();points.add(pt1);points.add(pt2);points.add(pt3);points.add(pt5);//PolylineOptions polylineOptions = new PolylineOptions();polylineOptions.points(points);polylineOptions.color(0xFF000000);polylineOptions.width(4);// 折線線寬bdMap.addOverlay(polylineOptions);}/*** 添加圓點覆蓋物*/private void addDotOptions() {bdMap.clear();DotOptions dotOptions = new DotOptions();dotOptions.center(new LatLng(latitude, longitude));// 設置圓心坐標dotOptions.color(0XFFfaa755);// 顏色dotOptions.radius(25);// 設置半徑bdMap.addOverlay(dotOptions);}/*** 添加圓(空心)覆蓋物*/private void addCircleOptions() {bdMap.clear();CircleOptions circleOptions = new CircleOptions();circleOptions.center(new LatLng(latitude, longitude));// 設置圓心坐標circleOptions.fillColor(0XFFfaa755);// 圓的填充顏色circleOptions.radius(150);// 設置半徑circleOptions.stroke(new Stroke(5, 0xAA00FF00));// 設置邊框bdMap.addOverlay(circleOptions);}/*** 添加弧線覆蓋物*/private void addArcOptions() {bdMap.clear();LatLng pt1 = new LatLng(latitude, longitude - 0.01);LatLng pt2 = new LatLng(latitude - 0.01, longitude - 0.01);LatLng pt3 = new LatLng(latitude, longitude + 0.01);ArcOptions arcOptions = new ArcOptions();arcOptions.points(pt1, pt2, pt3);// 設置弧線的起點、中點、終點坐標arcOptions.width(5);// 線寬arcOptions.color(0xFF000000);bdMap.addOverlay(arcOptions);}/*** 顯示彈出窗口覆蓋物*/private void displayInfoWindow(final LatLng latLng) {// 創建infowindow展示的viewButton btn = new Button(getApplicationContext());btn.setBackgroundResource(R.drawable.popup);btn.setText("點我點我~");btn.setTextColor(0xAA000000);BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromView(btn);// infowindow點擊事件OnInfoWindowClickListener infoWindowClickListener = new OnInfoWindowClickListener() {@Overridepublic void onInfoWindowClick() {reverseGeoCode(latLng);// 隱藏InfoWindowbdMap.hideInfoWindow();}};// 創建infowindowInfoWindow infoWindow = new InfoWindow(bitmapDescriptor, latLng, -47,infoWindowClickListener);// 顯示InfoWindowbdMap.showInfoWindow(infoWindow);}/*** 反地理編碼得到地址信息*/private void reverseGeoCode(LatLng latLng) {// 創建地理編碼檢索實例GeoCoder geoCoder = GeoCoder.newInstance();//OnGetGeoCoderResultListener listener = new OnGetGeoCoderResultListener() {// 反地理編碼查詢結果回調函數@Overridepublic void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {if (result == null|| result.error != SearchResult.ERRORNO.NO_ERROR) {// 沒有檢測到結果Toast.makeText(AddOverlayActivity.this, "抱歉,未能找到結果",Toast.LENGTH_LONG).show();}Toast.makeText(AddOverlayActivity.this,"位置:" + result.getAddress(), Toast.LENGTH_LONG).show();}// 地理編碼查詢結果回調函數@Overridepublic void onGetGeoCodeResult(GeoCodeResult result) {if (result == null|| result.error != SearchResult.ERRORNO.NO_ERROR) {// 沒有檢測到結果}}};// 設置地理編碼檢索監聽者geoCoder.setOnGetGeoCodeResultListener(listener);//geoCoder.reverseGeoCode(new ReverseGeoCodeOption().location(latLng));// 釋放地理編碼檢索實例// geoCoder.destroy();}@Overrideprotected void onResume() {super.onResume();mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();mMapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();mMapView.onDestroy();// 回收bitmip資源bitmap.recycle();bitmap2.recycle();} }

    參考鏈接

    百度地圖開發(二)之添加覆蓋物 + 地理編碼和反地理編碼 - crazy_jack - 博客頻道 - CSDN.NET

    地圖控制實現

    package com.zj.mapall;import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BaiduMap.OnMapClickListener; import com.baidu.mapapi.map.BaiduMap.SnapshotReadyCallback; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.MapPoi; import com.baidu.mapapi.map.MapStatus; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MyLocationConfiguration; import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode; import com.baidu.mapapi.map.MyLocationData; import com.baidu.mapapi.model.LatLng;import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast;/*** 地圖控制demo(點擊、雙擊、長按、縮放、旋轉、俯視) + 定位* * @author ys**/ public class MapControllActivity extends Activity implements OnClickListener {// 地圖控件對象private MapView mapView;// 百度地圖對象private BaiduMap bdMap;// 經緯度private double latitude, longitude;// 縮小private Button zoomOutBtn;// 放大private Button zoomInBtn;// 旋轉private Button rotateBtn;// 俯視private Button overlookBtn;// 截圖private Button screenShotBtn;// 標記是否已經放大到最大或者縮小到最小級別private boolean isMaxOrMin = false;private float maxZoom = 0.0f;private float minZoom = 0.0f;// 記錄當前地圖的縮放級別private float currentZoom = 0.0f;// 描述地圖狀態將要發生的狀態private MapStatusUpdate msu;// 用于生成地圖將要發生的變化private MapStatusUpdateFactory msuFactory;// 定義地圖狀態private MapStatus mapStatus;// 旋轉角度private float rotateAngle = 0.0f;// 俯視角度 (0 ~ -45°)private float overlookAngle = 0.0f;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_map_controll);init();}/*** */private void init() {mapView = (MapView) findViewById(R.id.bd_mapview);bdMap = mapView.getMap();mapView.showZoomControls(false);// 不顯示默認的縮放控件mapView.showScaleControl(false);// 不顯示默認比例尺控件maxZoom = bdMap.getMaxZoomLevel();// 獲得地圖的最大縮放級別minZoom = bdMap.getMinZoomLevel();// 獲得地圖的最小縮放級別zoomInBtn = (Button) findViewById(R.id.zoom_in_btn);zoomOutBtn = (Button) findViewById(R.id.zoom_out_btn);rotateBtn = (Button) findViewById(R.id.rotate_btn);overlookBtn = (Button) findViewById(R.id.overlook_btn);screenShotBtn = (Button) findViewById(R.id.screen_shot_btn);zoomInBtn.setOnClickListener(this);zoomOutBtn.setOnClickListener(this);rotateBtn.setOnClickListener(this);overlookBtn.setOnClickListener(this);screenShotBtn.setOnClickListener(this);bdMap.setOnMapClickListener(new OnMapClickListener() {@Overridepublic boolean onMapPoiClick(MapPoi arg0) {return false;}@Overridepublic void onMapClick(LatLng arg0) {// 設置地圖新中心點msu = msuFactory.newLatLng(arg0);bdMap.animateMapStatus(msu);Toast.makeText(MapControllActivity.this,"地圖中心點移動到:" + arg0.toString(), Toast.LENGTH_SHORT).show();}});}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.zoom_out_btn:// 縮小msu = msuFactory.zoomOut();bdMap.animateMapStatus(msu);currentZoom = bdMap.getMapStatus().zoom;Toast.makeText(MapControllActivity.this,"當前地圖的縮放級別是:" + currentZoom, Toast.LENGTH_SHORT).show();break;case R.id.zoom_in_btn:// 放大msu = msuFactory.zoomIn();bdMap.animateMapStatus(msu);currentZoom = bdMap.getMapStatus().zoom;Toast.makeText(MapControllActivity.this,"當前地圖的縮放級別是:" + currentZoom, Toast.LENGTH_SHORT).show();break;case R.id.rotate_btn:// 旋轉mapStatus = new MapStatus.Builder(bdMap.getMapStatus()).rotate(rotateAngle += 30).build();msu = msuFactory.newMapStatus(mapStatus);bdMap.animateMapStatus(msu);break;case R.id.overlook_btn:// 俯視mapStatus = new MapStatus.Builder(bdMap.getMapStatus()).overlook(overlookAngle -= 10).build();msu = msuFactory.newMapStatus(mapStatus);bdMap.animateMapStatus(msu);break;case R.id.screen_shot_btn:// 截圖bdMap.snapshot(new SnapshotReadyCallback() {@Overridepublic void onSnapshotReady(Bitmap bitmap) {File file = new File("/mnt/sdcard/test.png");FileOutputStream out;try {out = new FileOutputStream(file);if (bitmap.compress(Bitmap.CompressFormat.PNG, 100, out)) {out.flush();out.close();}Toast.makeText(MapControllActivity.this,"屏幕截圖成功,圖片存在: " + file.toString(),Toast.LENGTH_SHORT).show();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}});break;default:break;}}@Overrideprotected void onPause() {super.onPause();mapView.onPause();}@Overrideprotected void onResume() {super.onResume();mapView.onResume();}@Overrideprotected void onDestroy() {super.onDestroy();mapView.onDestroy();}}

    定位實現

    package com.zj.mapall;import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.BDNotifyListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.location.LocationClientOption.LocationMode; import com.baidu.mapapi.map.MyLocationConfiguration; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MyLocationData; import com.baidu.mapapi.model.LatLng;import android.app.Activity; import android.app.Service; import android.os.Bundle; import android.os.Vibrator; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast;/*** 定位* * @author ys**/ public class LocationActivity extends Activity implements OnClickListener {private MapView mapview;private BaiduMap bdMap;private LocationClient locationClient;private BDLocationListener locationListener;private BDNotifyListener notifyListener;private double longitude;// 精度private double latitude;// 維度private float radius;// 定位精度半徑,單位是米private String addrStr;// 反地理編碼private String province;// 省份信息private String city;// 城市信息private String district;// 區縣信息private float direction;// 手機方向信息private int locType;// 定位按鈕private Button locateBtn;// 定位模式 (普通-跟隨-羅盤)private MyLocationConfiguration.LocationMode currentMode;// 定位圖標描述private BitmapDescriptor currentMarker = null;// 記錄是否第一次定位private boolean isFirstLoc = true;//振動器設備private Vibrator mVibrator;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_location);mapview = (MapView) findViewById(R.id.bd_mapview);bdMap = mapview.getMap();locateBtn = (Button) findViewById(R.id.locate_btn);locateBtn.setOnClickListener(this);currentMode = MyLocationConfiguration.LocationMode.NORMAL;locateBtn.setText("普通");mVibrator =(Vibrator)getApplicationContext().getSystemService(Service.VIBRATOR_SERVICE);init();}/*** */private void init() {bdMap.setMyLocationEnabled(true);// 1. 初始化LocationClient類locationClient = new LocationClient(getApplicationContext());// 2. 聲明LocationListener類locationListener = new MyLocationListener();// 3. 注冊監聽函數locationClient.registerLocationListener(locationListener);// 4. 設置參數LocationClientOption locOption = new LocationClientOption();locOption.setLocationMode(LocationMode.Hight_Accuracy);// 設置定位模式locOption.setCoorType("bd09ll");// 設置定位結果類型locOption.setScanSpan(20000);// 設置發起定位請求的間隔時間,mslocOption.setIsNeedAddress(true);// 返回的定位結果包含地址信息locOption.setNeedDeviceDirect(true);// 設置返回結果包含手機的方向locationClient.setLocOption(locOption);// 5. 注冊位置提醒監聽事件notifyListener = new MyNotifyListener();notifyListener.SetNotifyLocation(longitude, latitude, 3000, "bd09ll");//精度,維度,范圍,坐標類型locationClient.registerNotify(notifyListener);// 6. 開啟/關閉 定位SDKlocationClient.start();// locationClient.stop();// 發起定位,異步獲取當前位置,因為是異步的,所以立即返回,不會引起阻塞// 定位的結果在ReceiveListener的方法onReceive方法的參數中返回。// 當定位SDK從定位依據判定,位置和上一次沒發生變化,而且上一次定位結果可用時,則不會發生網絡請求,而是返回上一次的定位結果。// 返回值,0:正常發起了定位 1:service沒有啟動 2:沒有監聽函數// 6:兩次請求時間太短(前后兩次請求定位時間間隔不能小于1000ms)/** if (locationClient != null && locationClient.isStarted()) {* requestResult = locationClient.requestLocation(); } else {* Log.d("LocSDK5", "locClient is null or not started"); }*/}/*** * @author ys**/class MyLocationListener implements BDLocationListener {// 異步返回的定位結果@Overridepublic void onReceiveLocation(BDLocation location) {if (location == null) {return;}locType = location.getLocType();Toast.makeText(LocationActivity.this, "當前定位的返回值是:"+locType, Toast.LENGTH_SHORT).show();longitude = location.getLongitude();latitude = location.getLatitude();if (location.hasRadius()) {// 判斷是否有定位精度半徑radius = location.getRadius();}if (locType == BDLocation.TypeGpsLocation) {//Toast.makeText(LocationActivity.this,"當前速度是:" + location.getSpeed() + "~~定位使用衛星數量:"+ location.getSatelliteNumber(),Toast.LENGTH_SHORT).show();} else if (locType == BDLocation.TypeNetWorkLocation) {addrStr = location.getAddrStr();// 獲取反地理編碼(文字描述的地址)Toast.makeText(LocationActivity.this, addrStr,Toast.LENGTH_SHORT).show();}direction = location.getDirection();// 獲取手機方向,【0~360°】,手機上面正面朝北為0°province = location.getProvince();// 省份city = location.getCity();// 城市district = location.getDistrict();// 區縣Toast.makeText(LocationActivity.this,province + "~" + city + "~" + district, Toast.LENGTH_SHORT).show();// 構造定位數據MyLocationData locData = new MyLocationData.Builder().accuracy(radius)//.direction(direction)// 方向.latitude(latitude)//.longitude(longitude)//.build();// 設置定位數據bdMap.setMyLocationData(locData);LatLng ll = new LatLng(latitude, longitude);MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);bdMap.animateMapStatus(msu);}}/*** 位置提醒監聽器* @author ys**/class MyNotifyListener extends BDNotifyListener {@Overridepublic void onNotify(BDLocation bdLocation, float distance) {super.onNotify(bdLocation, distance);mVibrator.vibrate(1000);//振動提醒已到設定位置附近Toast.makeText(LocationActivity.this, "震動提醒", Toast.LENGTH_SHORT).show();}}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.locate_btn:// 定位switch (currentMode) {case NORMAL:locateBtn.setText("跟隨");currentMode = MyLocationConfiguration.LocationMode.FOLLOWING;break;case FOLLOWING:locateBtn.setText("羅盤");currentMode = MyLocationConfiguration.LocationMode.COMPASS;break;case COMPASS:locateBtn.setText("普通");currentMode = MyLocationConfiguration.LocationMode.NORMAL;break;}bdMap.setMyLocationConfigeration(new MyLocationConfiguration(currentMode, true, currentMarker));break;}}@Overrideprotected void onResume() {super.onResume();mapview.onResume();}@Overrideprotected void onPause() {super.onPause();mapview.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();mapview.onDestroy();locationClient.unRegisterLocationListener(locationListener);//取消位置提醒locationClient.removeNotifyEvent(notifyListener);locationClient.stop();} }

    參考鏈接

    百度地圖開發(三)之地圖控制 + 定位 - crazy_jack - 博客頻道 - CSDN.NET

    效果如下

    POI檢索實現

    package com.zj.mapall;import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.model.LatLngBounds; import com.baidu.mapapi.overlayutil.PoiOverlay;import com.baidu.mapapi.search.core.PoiInfo; import com.baidu.mapapi.search.core.SearchResult; import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener; import com.baidu.mapapi.search.poi.PoiBoundSearchOption; import com.baidu.mapapi.search.poi.PoiCitySearchOption; import com.baidu.mapapi.search.poi.PoiDetailResult; import com.baidu.mapapi.search.poi.PoiDetailSearchOption; import com.baidu.mapapi.search.poi.PoiNearbySearchOption; import com.baidu.mapapi.search.poi.PoiResult; import com.baidu.mapapi.search.poi.PoiSearch; import com.baidu.mapapi.search.share.OnGetShareUrlResultListener; import com.baidu.mapapi.search.share.ShareUrlResult; import com.baidu.mapapi.search.share.ShareUrlSearch;import android.app.Activity; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;/*** POI檢索 1.周邊檢索 2. 范圍檢索 3. 城市檢索 4.詳細檢索* * @author ys**/ public class PoiSearchActivity extends Activity implements OnClickListener {private MapView mapView;private BaiduMap bdMap;//private PoiSearch poiSearch;private ShareUrlSearch shareUrlSearch;private EditText editCityEt, editSearchKeyEt;// 城市檢索,區域檢索,周邊檢索,下一組數據 按鈕private Button citySearchBtn, boundSearchBtn, nearbySearchBtn, nextDataBtn;// 記錄檢索類型private int type;// 記錄頁標private int page = 1;private int totalPage = 0;private double latitude = 39.9361752;private double longitude = 116.400244;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_poi_search);init();}private void init() {mapView = (MapView) findViewById(R.id.mapview);mapView.showZoomControls(false);bdMap = mapView.getMap();// 實例化PoiSearch對象poiSearch = PoiSearch.newInstance();// 設置檢索監聽器poiSearch.setOnGetPoiSearchResultListener(poiSearchListener);editCityEt = (EditText) findViewById(R.id.city);editSearchKeyEt = (EditText) findViewById(R.id.searchkey);citySearchBtn = (Button) findViewById(R.id.city_search_btn);boundSearchBtn = (Button) findViewById(R.id.bound_search_btn);nearbySearchBtn = (Button) findViewById(R.id.nearby_search_btn);nextDataBtn = (Button) findViewById(R.id.next_data_btn);nextDataBtn.setEnabled(false);citySearchBtn.setOnClickListener(this);boundSearchBtn.setOnClickListener(this);nearbySearchBtn.setOnClickListener(this);nextDataBtn.setOnClickListener(this);editSearchKeyEt.addTextChangedListener(new TextWatcher() {@Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {citySearchBtn.setEnabled(true);boundSearchBtn.setEnabled(true);nearbySearchBtn.setEnabled(true);nextDataBtn.setEnabled(false);page = 1;totalPage = 0;}@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {}@Overridepublic void afterTextChanged(Editable s) {}});shareUrlSearch = ShareUrlSearch.newInstance();}/*** */OnGetPoiSearchResultListener poiSearchListener = new OnGetPoiSearchResultListener() {@Overridepublic void onGetPoiResult(PoiResult poiResult) {if (poiResult == null|| poiResult.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {// 沒有找到檢索結果Toast.makeText(PoiSearchActivity.this, "未找到結果",Toast.LENGTH_LONG).show();return;}if (poiResult.error == SearchResult.ERRORNO.NO_ERROR) {// 檢索結果正常返回bdMap.clear();MyPoiOverlay poiOverlay = new MyPoiOverlay(bdMap);poiOverlay.setData(poiResult);// 設置POI數據bdMap.setOnMarkerClickListener(poiOverlay);poiOverlay.addToMap();// 將所有的overlay添加到地圖上poiOverlay.zoomToSpan();//totalPage = poiResult.getTotalPageNum();// 獲取總分頁數Toast.makeText(PoiSearchActivity.this,"總共查到" + poiResult.getTotalPoiNum() + "個興趣點, 分為"+ totalPage + "頁", Toast.LENGTH_SHORT).show();}}@Overridepublic void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {if (poiDetailResult.error != SearchResult.ERRORNO.NO_ERROR) {Toast.makeText(PoiSearchActivity.this, "抱歉,未找到結果",Toast.LENGTH_SHORT).show();} else {// 正常返回結果的時候,此處可以獲得很多相關信息Toast.makeText(PoiSearchActivity.this,poiDetailResult.getName() + ": "+ poiDetailResult.getAddress(),Toast.LENGTH_LONG).show();}}};/*** 短串檢索監聽器*/OnGetShareUrlResultListener shareUrlResultListener = new OnGetShareUrlResultListener() {@Overridepublic void onGetPoiDetailShareUrlResult(ShareUrlResult arg0) {}@Overridepublic void onGetLocationShareUrlResult(ShareUrlResult arg0) {}@Overridepublic void onGetRouteShareUrlResult(ShareUrlResult arg0) {// TODO Auto-generated method stub}};class MyPoiOverlay extends PoiOverlay {public MyPoiOverlay(BaiduMap arg0) {super(arg0);}@Overridepublic boolean onPoiClick(int arg0) {super.onPoiClick(arg0);PoiInfo poiInfo = getPoiResult().getAllPoi().get(arg0);poiSearch.searchPoiDetail(new PoiDetailSearchOption().poiUid(poiInfo.uid));return true;}}/*** 城市內搜索*/private void citySearch(int page) {// 設置檢索參數PoiCitySearchOption citySearchOption = new PoiCitySearchOption();citySearchOption.city(editCityEt.getText().toString());// 城市citySearchOption.keyword(editSearchKeyEt.getText().toString());// 關鍵字citySearchOption.pageCapacity(15);// 默認每頁10條citySearchOption.pageNum(page);// 分頁編號// 發起檢索請求poiSearch.searchInCity(citySearchOption);}/*** 范圍檢索*/private void boundSearch(int page) {PoiBoundSearchOption boundSearchOption = new PoiBoundSearchOption();LatLng southwest = new LatLng(latitude - 0.01, longitude - 0.012);// 西南LatLng northeast = new LatLng(latitude + 0.01, longitude + 0.012);// 東北LatLngBounds bounds = new LatLngBounds.Builder().include(southwest).include(northeast).build();// 得到一個地理范圍對象boundSearchOption.bound(bounds);// 設置poi檢索范圍boundSearchOption.keyword(editSearchKeyEt.getText().toString());// 檢索關鍵字boundSearchOption.pageNum(page);poiSearch.searchInBound(boundSearchOption);// 發起poi范圍檢索請求}/*** 附近檢索*/private void nearbySearch(int page) {PoiNearbySearchOption nearbySearchOption = new PoiNearbySearchOption();nearbySearchOption.location(new LatLng(latitude, longitude));nearbySearchOption.keyword(editSearchKeyEt.getText().toString());nearbySearchOption.radius(1000);// 檢索半徑,單位是米nearbySearchOption.pageNum(page);poiSearch.searchNearby(nearbySearchOption);// 發起附近檢索請求}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.city_search_btn:type = 0;page = 1;citySearchBtn.setEnabled(false);boundSearchBtn.setEnabled(true);nearbySearchBtn.setEnabled(true);nextDataBtn.setEnabled(true);bdMap.clear();citySearch(page);break;case R.id.bound_search_btn:type = 1;page = 1;citySearchBtn.setEnabled(true);boundSearchBtn.setEnabled(false);nearbySearchBtn.setEnabled(true);nextDataBtn.setEnabled(true);bdMap.clear();boundSearch(page);break;case R.id.nearby_search_btn:type = 2;page = 1;citySearchBtn.setEnabled(true);boundSearchBtn.setEnabled(true);nearbySearchBtn.setEnabled(false);nextDataBtn.setEnabled(true);bdMap.clear();nearbySearch(page);break;case R.id.next_data_btn:switch (type) {case 0:if (++page <= totalPage) {citySearch(page);} else {Toast.makeText(PoiSearchActivity.this, "已經查到了最后一頁~",Toast.LENGTH_SHORT).show();}break;case 1:if (++page <= totalPage) {boundSearch(page);} else {Toast.makeText(PoiSearchActivity.this, "已經查到了最后一頁~",Toast.LENGTH_SHORT).show();}break;case 2:if (++page <= totalPage) {nearbySearch(page);} else {Toast.makeText(PoiSearchActivity.this, "已經查到了最后一頁~",Toast.LENGTH_SHORT).show();}break;}break;default:break;}}@Overrideprotected void onResume() {super.onResume();mapView.onResume();}@Overrideprotected void onPause() {super.onPause();mapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();poiSearch.destroy();// 釋放poi檢索對象mapView.onDestroy();}}

    注意,在這里需要用到PoiOverlay,最新的jar包中已經沒有這個類了,但已經開源,可以直接下載源代碼加入

    參考鏈接

    現在檢索接口中沒有PoiOverlay類了嗎 - Android地圖SDK - 百度地圖開放平臺 - Powered by Discuz!

    百度地圖開發(四)之POI檢索 - crazy_jack - 博客頻道 - CSDN.NET

    效果如下

    公交線路查詢實現

    package com.zj.mapall;import java.util.ArrayList; import java.util.List;import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MarkerOptions; import com.baidu.mapapi.map.OverlayOptions; import com.baidu.mapapi.overlayutil.BusLineOverlay; import com.baidu.mapapi.search.busline.BusLineResult; import com.baidu.mapapi.search.busline.BusLineSearch; import com.baidu.mapapi.search.busline.BusLineSearchOption; import com.baidu.mapapi.search.busline.OnGetBusLineSearchResultListener; import com.baidu.mapapi.search.core.PoiInfo; import com.baidu.mapapi.search.core.SearchResult; import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener; import com.baidu.mapapi.search.poi.PoiCitySearchOption; import com.baidu.mapapi.search.poi.PoiDetailResult; import com.baidu.mapapi.search.poi.PoiResult; import com.baidu.mapapi.search.poi.PoiSearch;import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast;/*** 公交線路查詢* * @author ys**/ public class BusLineSearchActivity extends Activity implements OnClickListener {private EditText cityEt;private EditText buslineEt;private Button searchBtn;private Button nextlineBtn;private MapView mapView;private BaiduMap bdMap;private String city;// 城市private String busline;// 公交路線private List<String> buslineIdList;// 存儲公交線路的uidprivate int buslineIndex = 0;// 標記第幾個路線private PoiSearch poiSearch;private BusLineSearch busLineSearch;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_busline_search);init();}/*** 初始化操作*/private void init() {mapView = (MapView) findViewById(R.id.mapview);bdMap = mapView.getMap();cityEt = (EditText) findViewById(R.id.city_et);buslineEt = (EditText) findViewById(R.id.searchkey_et);searchBtn = (Button) findViewById(R.id.busline_search_btn);nextlineBtn = (Button) findViewById(R.id.nextline_btn);searchBtn.setOnClickListener(this);nextlineBtn.setOnClickListener(this);buslineIdList = new ArrayList<String>();poiSearch = PoiSearch.newInstance();poiSearch.setOnGetPoiSearchResultListener(poiSearchResultListener);busLineSearch = BusLineSearch.newInstance();busLineSearch.setOnGetBusLineSearchResultListener(busLineSearchResultListener);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.busline_search_btn:city = cityEt.getText().toString();busline = buslineEt.getText().toString();poiSearch.searchInCity((new PoiCitySearchOption()).city(city).keyword(busline));break;case R.id.nextline_btn:searchBusline();break;}}private void searchBusline() {if (buslineIndex >= buslineIdList.size()) {buslineIndex = 0;}if (buslineIndex >= 0 && buslineIndex < buslineIdList.size()&& buslineIdList.size() > 0) {boolean flag = busLineSearch.searchBusLine((new BusLineSearchOption().city(city).uid(buslineIdList.get(buslineIndex))));if (flag) {Toast.makeText(BusLineSearchActivity.this, "檢索成功~", 1000).show();} else {Toast.makeText(BusLineSearchActivity.this, "檢索失敗~", 1000).show();}buslineIndex++;}}/*** POI檢索結果監聽器*/OnGetPoiSearchResultListener poiSearchResultListener = new OnGetPoiSearchResultListener() {@Overridepublic void onGetPoiResult(PoiResult poiResult) {if (poiResult == null|| poiResult.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {// 沒有找到檢索結果Toast.makeText(BusLineSearchActivity.this, "未找到結果",Toast.LENGTH_LONG).show();return;}if (poiResult.error == SearchResult.ERRORNO.NO_ERROR) {// 檢索結果正常返回// 遍歷所有poi,找到類型為公交線路的poibuslineIdList.clear();for (PoiInfo poi : poiResult.getAllPoi()) {if (poi.type == PoiInfo.POITYPE.BUS_LINE|| poi.type == PoiInfo.POITYPE.SUBWAY_LINE) {buslineIdList.add(poi.uid);}}searchBusline();}}@Overridepublic void onGetPoiDetailResult(PoiDetailResult arg0) {}};/*** 公交信息查詢結果監聽器*/OnGetBusLineSearchResultListener busLineSearchResultListener = new OnGetBusLineSearchResultListener() {@Overridepublic void onGetBusLineResult(BusLineResult busLineResult) {if (busLineResult.error != SearchResult.ERRORNO.NO_ERROR) {Toast.makeText(BusLineSearchActivity.this, "抱歉,未找到結果",Toast.LENGTH_SHORT).show();} else {bdMap.clear();BusLineOverlay overlay = new MyBuslineOverlay(bdMap);// 用于顯示一條公交詳情結果的Overlayoverlay.setData(busLineResult);overlay.addToMap();// 將overlay添加到地圖上overlay.zoomToSpan();// 縮放地圖,使所有overlay都在合適的視野范圍內bdMap.setOnMarkerClickListener(overlay);// 公交線路名稱Toast.makeText(BusLineSearchActivity.this,busLineResult.getBusLineName(), Toast.LENGTH_SHORT).show();}}};class MyBuslineOverlay extends BusLineOverlay {public MyBuslineOverlay(BaiduMap arg0) {super(arg0);}/*** 站點點擊事件*/@Overridepublic boolean onBusStationClick(int arg0) {MarkerOptions options = (MarkerOptions) getOverlayOptions().get(arg0);bdMap.animateMapStatus(MapStatusUpdateFactory.newLatLng(options.getPosition()));return true;}}@Overrideprotected void onResume() {super.onResume();mapView.onResume();}@Overrideprotected void onPause() {super.onPause();mapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();poiSearch.destroy();// 釋放檢索對象資源busLineSearch.destroy();// 釋放檢索對象資源mapView.onDestroy();}}

    效果如下

    路徑規劃實現

    package com.zj.mapall;import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.overlayutil.DrivingRouteOverlay; import com.baidu.mapapi.overlayutil.TransitRouteOverlay; import com.baidu.mapapi.overlayutil.WalkingRouteOverlay; import com.baidu.mapapi.search.core.SearchResult; import com.baidu.mapapi.search.route.BikingRouteResult; import com.baidu.mapapi.search.route.DrivingRoutePlanOption; import com.baidu.mapapi.search.route.DrivingRoutePlanOption.DrivingPolicy; import com.baidu.mapapi.search.route.DrivingRouteResult; import com.baidu.mapapi.search.route.OnGetRoutePlanResultListener; import com.baidu.mapapi.search.route.PlanNode; import com.baidu.mapapi.search.route.RoutePlanSearch; import com.baidu.mapapi.search.route.TransitRoutePlanOption; import com.baidu.mapapi.search.route.TransitRoutePlanOption.TransitPolicy; import com.baidu.mapapi.search.route.TransitRouteResult; import com.baidu.mapapi.search.route.WalkingRoutePlanOption; import com.baidu.mapapi.search.route.WalkingRouteResult;import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast;/*** 路線規劃* * @author ys* */ public class RoutePlanningActivity extends Activity implements OnClickListener {private MapView mapView;private BaiduMap bdMap;private EditText startEt;private EditText endEt;private String startPlace;// 開始地點private String endPlace;// 結束地點private Button driveBtn;// 駕車private Button walkBtn;// 步行private Button transitBtn;// 換成 (公交)private Button nextLineBtn;private Spinner drivingSpinner, transitSpinner;private RoutePlanSearch routePlanSearch;// 路徑規劃搜索接口private int index = -1;private int totalLine = 0;// 記錄某種搜索出的方案數量private int drivintResultIndex = 0;// 駕車路線方案indexprivate int transitResultIndex = 0;// 換乘路線方案index@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_route_planning);init();}/*** */private void init() {mapView = (MapView) findViewById(R.id.mapview);mapView.showZoomControls(false);bdMap = mapView.getMap();startEt = (EditText) findViewById(R.id.start_et);endEt = (EditText) findViewById(R.id.end_et);driveBtn = (Button) findViewById(R.id.drive_btn);transitBtn = (Button) findViewById(R.id.transit_btn);walkBtn = (Button) findViewById(R.id.walk_btn);nextLineBtn = (Button) findViewById(R.id.nextline_btn);nextLineBtn.setEnabled(false);driveBtn.setOnClickListener(this);transitBtn.setOnClickListener(this);walkBtn.setOnClickListener(this);nextLineBtn.setOnClickListener(this);drivingSpinner = (Spinner) findViewById(R.id.driving_spinner);String[] drivingItems = getResources().getStringArray(R.array.driving_spinner);ArrayAdapter<String> drivingAdapter = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item, drivingItems);drivingSpinner.setAdapter(drivingAdapter);drivingSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) {if (index == 0) {drivintResultIndex = 0;drivingSearch(drivintResultIndex);}}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}});transitSpinner = (Spinner) findViewById(R.id.transit_spinner);String[] transitItems = getResources().getStringArray(R.array.transit_spinner);ArrayAdapter<String> transitAdapter = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item, transitItems);transitSpinner.setAdapter(transitAdapter);transitSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id) {if (index == 1) {transitResultIndex = 0;transitSearch(transitResultIndex);}}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}});routePlanSearch = RoutePlanSearch.newInstance();routePlanSearch.setOnGetRoutePlanResultListener(routePlanResultListener);}/*** 路線規劃結果回調*/OnGetRoutePlanResultListener routePlanResultListener = new OnGetRoutePlanResultListener() {/*** 步行路線結果回調*/@Overridepublic void onGetWalkingRouteResult(WalkingRouteResult walkingRouteResult) {bdMap.clear();if (walkingRouteResult == null|| walkingRouteResult.error != SearchResult.ERRORNO.NO_ERROR) {Toast.makeText(RoutePlanningActivity.this, "抱歉,未找到結果",Toast.LENGTH_SHORT).show();}if (walkingRouteResult.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {// TODOreturn;}if (walkingRouteResult.error == SearchResult.ERRORNO.NO_ERROR) {WalkingRouteOverlay walkingRouteOverlay = new WalkingRouteOverlay(bdMap);walkingRouteOverlay.setData(walkingRouteResult.getRouteLines().get(drivintResultIndex));bdMap.setOnMarkerClickListener(walkingRouteOverlay);walkingRouteOverlay.addToMap();walkingRouteOverlay.zoomToSpan();totalLine = walkingRouteResult.getRouteLines().size();Toast.makeText(RoutePlanningActivity.this,"共查詢出" + totalLine + "條符合條件的線路", 1000).show();if (totalLine > 1) {nextLineBtn.setEnabled(true);}}}/*** 換成路線結果回調*/@Overridepublic void onGetTransitRouteResult(TransitRouteResult transitRouteResult) {bdMap.clear();if (transitRouteResult == null|| transitRouteResult.error != SearchResult.ERRORNO.NO_ERROR) {Toast.makeText(RoutePlanningActivity.this, "抱歉,未找到結果",Toast.LENGTH_SHORT).show();}if (transitRouteResult.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {// 起終點或途經點地址有岐義,通過以下接口獲取建議查詢信息// drivingRouteResult.getSuggestAddrInfo()return;}if (transitRouteResult.error == SearchResult.ERRORNO.NO_ERROR) {TransitRouteOverlay transitRouteOverlay = new TransitRouteOverlay(bdMap);transitRouteOverlay.setData(transitRouteResult.getRouteLines().get(drivintResultIndex));// 設置一條駕車路線方案bdMap.setOnMarkerClickListener(transitRouteOverlay);transitRouteOverlay.addToMap();transitRouteOverlay.zoomToSpan();totalLine = transitRouteResult.getRouteLines().size();Toast.makeText(RoutePlanningActivity.this,"共查詢出" + totalLine + "條符合條件的線路", 1000).show();if (totalLine > 1) {nextLineBtn.setEnabled(true);}// 通過getTaxiInfo()可以得到很多關于打車的信息Toast.makeText(RoutePlanningActivity.this,"該路線打車總路程"+ transitRouteResult.getTaxiInfo().getDistance(), 1000).show();}}/*** 駕車路線結果回調 查詢的結果可能包括多條駕車路線方案*/@Overridepublic void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {bdMap.clear();Log.i("test", "test1");if (drivingRouteResult == null|| drivingRouteResult.error != SearchResult.ERRORNO.NO_ERROR) {Toast.makeText(RoutePlanningActivity.this, "抱歉,未找到結果",Toast.LENGTH_SHORT).show();}Log.i("test", "test2");if (drivingRouteResult.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) {// 起終點或途經點地址有岐義,通過以下接口獲取建議查詢信息// drivingRouteResult.getSuggestAddrInfo()return;}if (drivingRouteResult.error == SearchResult.ERRORNO.NO_ERROR) {DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(bdMap);Log.i("test", "test3");drivingRouteOverlay.setData(drivingRouteResult.getRouteLines().get(drivintResultIndex));// 設置一條駕車路線方案bdMap.setOnMarkerClickListener(drivingRouteOverlay);drivingRouteOverlay.addToMap();drivingRouteOverlay.zoomToSpan();totalLine = drivingRouteResult.getRouteLines().size();Toast.makeText(RoutePlanningActivity.this,"共查詢出" + totalLine + "條符合條件的線路", 1000).show();if (totalLine > 1) {nextLineBtn.setEnabled(true);}//Log.i("test",drivingRouteResult.getTaxiInfo().getDistance()+"");// 通過getTaxiInfo()可以得到很多關于打車的信息//Toast.makeText(RoutePlanningActivity.this,"該路線打車總路程"+ drivingRouteResult.getTaxiInfo().getDistance(), 1000).show();}}@Overridepublic void onGetBikingRouteResult(BikingRouteResult arg0) {// TODO Auto-generated method stubLog.i("test", "test5");}};/*** 駕車線路查詢*/private void drivingSearch(int index) {DrivingRoutePlanOption drivingOption = new DrivingRoutePlanOption();drivingOption.policy(DrivingPolicy.values()[drivingSpinner.getSelectedItemPosition()]);// 設置駕車路線策略drivingOption.from(PlanNode.withCityNameAndPlaceName("北京", startPlace));// 設置起點drivingOption.to(PlanNode.withCityNameAndPlaceName("北京", endPlace));// 設置終點routePlanSearch.drivingSearch(drivingOption);// 發起駕車路線規劃}/*** 換乘路線查詢*/private void transitSearch(int index) {TransitRoutePlanOption transitOption = new TransitRoutePlanOption();transitOption.city("北京");// 設置換乘路線規劃城市,起終點中的城市將會被忽略transitOption.from(PlanNode.withCityNameAndPlaceName("北京", startPlace));transitOption.to(PlanNode.withCityNameAndPlaceName("北京", endPlace));transitOption.policy(TransitPolicy.values()[transitSpinner.getSelectedItemPosition()]);// 設置換乘策略routePlanSearch.transitSearch(transitOption);}/*** 步行路線查詢*/private void walkSearch() {WalkingRoutePlanOption walkOption = new WalkingRoutePlanOption();walkOption.from(PlanNode.withCityNameAndPlaceName("北京", startPlace));walkOption.to(PlanNode.withCityNameAndPlaceName("北京", endPlace));routePlanSearch.walkingSearch(walkOption);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.drive_btn:// 駕車index = 0;drivintResultIndex = 0;startPlace = startEt.getText().toString();endPlace = endEt.getText().toString();driveBtn.setEnabled(false);transitBtn.setEnabled(true);walkBtn.setEnabled(true);nextLineBtn.setEnabled(false);drivingSearch(drivintResultIndex);break;case R.id.transit_btn:// 換乘index = 1;transitResultIndex = 0;startPlace = startEt.getText().toString();endPlace = endEt.getText().toString();transitBtn.setEnabled(false);driveBtn.setEnabled(true);walkBtn.setEnabled(true);nextLineBtn.setEnabled(false);transitSearch(transitResultIndex);break;case R.id.walk_btn:// 步行index = 2;startPlace = startEt.getText().toString();endPlace = endEt.getText().toString();walkBtn.setEnabled(false);driveBtn.setEnabled(true);transitBtn.setEnabled(true);nextLineBtn.setEnabled(false);walkSearch();break;case R.id.nextline_btn:// 下一條switch (index) {case 0:drivingSearch(++drivintResultIndex);break;case 1:transitSearch(transitResultIndex);break;case 2:break;}break;}}@Overrideprotected void onResume() {super.onResume();mapView.onResume();}@Overrideprotected void onPause() {super.onPause();mapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();routePlanSearch.destroy();// 釋放檢索實例mapView.onDestroy();}}

    注意

    在最新的jar包中,drivingRouteResult.getTaxiInfo().getDistance(),如果沒有出租車信息時會報空指針異常

    參考鏈接

    百度地圖開發(五)之公交信息檢索 + 路線規劃 - crazy_jack - 博客頻道 - CSDN.NET

    效果如下

    whuhan2013/MapAll: 百度地圖綜合實例代碼下載

    完成

    總結

    以上是生活随笔為你收集整理的百度地图综合的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    九九视频网站 | 视频二区在线 | 亚洲人毛片 | 中文超碰字幕 | av黄色免费看 | 四虎在线免费视频 | 亚洲精品视频中文字幕 | 日韩午夜在线 | 日韩精品一区二区三区免费观看视频 | 久久成人亚洲欧美电影 | 婷婷丁香激情五月 | 久草在线免费看视频 | 中文字幕高清在线播放 | 日韩欧美电影 | 中文字幕4 | 午夜色影院 | 免费无遮挡动漫网站 | 日日久视频 | 五月天综合激情网 | 日韩电影在线观看一区二区 | 精品国产精品久久一区免费式 | 免费a网址 | 玖玖玖影院| 久久不射电影网 | 欧美日韩观看 | 久久不射电影网 | 岛国av在线免费 | 国产成人福利片 | 色天天综合网 | 欧美久久久久久久久久久久久 | 久久精品一区二区三区中文字幕 | 中文字幕免费高清在线 | 久久精品官网 | 高清美女视频 | 在线观看福利网站 | 玖玖在线资源 | www..com黄色片 | 操操操av | 狠狠的操狠狠的干 | 日韩av免费观看网站 | 国产精品每日更新 | 日韩欧美黄色网址 | 欧美一区二区在线免费看 | 亚洲精品午夜aaa久久久 | 日韩精品极品视频 | 色综合久久久久综合99 | 日韩一级精品 | 午夜精品久久久久久久久久久久久久 | 91精品国自产在线偷拍蜜桃 | 久久国产免费看 | 一性一交视频 | 久久精品99久久久久久2456 | 欧美日韩国产一二三区 | 亚洲成aⅴ人在线观看 | 色网免费观看 | 1000部国产精品成人观看 | 狠狠色狠狠色合久久伊人 | 99久久久国产精品美女 | 夜夜躁狠狠躁日日躁 | 免费高清在线观看成人 | 欧美成人精品欧美一级乱黄 | 特黄特色特刺激视频免费播放 | 欧美坐爱视频 | 亚洲欧美成人综合 | 国产精品久久久久久一区二区三区 | 国产成人资源 | 亚洲女人天堂成人av在线 | 国产一线二线三线在线观看 | 亚洲天堂网在线视频 | 黄色国产成人 | 欧美一区二区三区在线播放 | 黄网站污 | 国产色小视频 | 色婷婷骚婷婷 | 免费观看av网站 | 久久男人视频 | 色小说在线 | 欧美在线99 | 9999毛片| 免费成人av| 久久国产精品99久久久久久丝袜 | 视频高清 | 成人h视频 | 欧美 激情在线 | 亚洲成aⅴ人在线观看 | 亚洲精品一区二区网址 | 一区二区三区高清 | 77国产精品 | 综合天堂av久久久久久久 | 97成人精品区在线播放 | 精品美女久久久久久免费 | 91av中文| 日日躁夜夜躁aaaaxxxx | 日韩高清片 | 成人免费视频网址 | 一区二区不卡高清 | 久章草在线观看 | 伊人网综合在线观看 | 国产精品嫩草影视久久久 | 精品一区二区三区久久 | 久久不卡日韩美女 | 久久久久久伊人 | 人人草天天草 | 亚洲精品mv在线观看 | 亚洲精品在线观看中文字幕 | 亚洲国产中文字幕 | 午夜在线观看 | 国产资源在线观看 | 97视频在线观看视频免费视频 | 伊人伊成久久人综合网站 | 蜜臀久久99静品久久久久久 | 97成人精品视频在线观看 | 99人成在线观看视频 | 亚洲欧美偷拍另类 | 亚洲精品中文在线观看 | 99久久精品国产一区 | 日韩videos| 欧美一区二区视频97 | 国产在线精品一区二区三区 | 91黄在线看| 欧美影片 | 亚洲精品视频免费观看 | 亚洲,播放 | 久久久综合色 | 久久伊人免费视频 | 国产日韩在线看 | 午夜手机电影 | 特级毛片在线观看 | 狠狠狠色丁香综合久久天下网 | 国产精品成人自产拍在线观看 | 超碰在线最新地址 | 久久精品国产精品亚洲精品 | 国产手机在线观看 | 日韩午夜高清 | 亚洲永久精品在线观看 | 在线观看欧美成人 | 婷婷资源站 | 久久一级片 | 亚洲精品男女 | 国产日产精品久久久久快鸭 | 国产高清av | 麻豆影视网 | 美女视频永久黄网站免费观看国产 | 欧美91精品久久久久国产性生爱 | 97在线精品国自产拍中文 | 国产玖玖在线 | 日韩专区在线观看 | 久久久久久久久久网站 | 日韩亚洲在线观看 | av在线免费在线 | 久久免费av电影 | 91片黄在线观看动漫 | 92中文资源在线 | 大胆欧美gogo免费视频一二区 | www.狠狠色 | 免费看国产曰批40分钟 | 99精品视频99 | 91天堂素人约啪 | 91精品久久久久久综合乱菊 | 国产成人免费观看 | 日韩亚洲国产精品 | av免费电影在线观看 | 成年人免费观看国产 | 免费污片| 六月丁香社区 | 亚洲精品视频免费 | 成人网大片 | 欧美一区免费在线观看 | 欧美精品亚洲二区 | 国产美女在线观看 | 99在线观看精品 | 国产一级片播放 | 国产精品婷婷午夜在线观看 | 激情五月看片 | 精品国产乱码久久久久 | 日韩在线小视频 | 色综合久久久久久中文网 | 免费网站污 | 天天干亚洲 | 色婷婷久久 | 青青河边草手机免费 | 久保带人 | 天天干人人干 | 亚洲欧美精品在线 | 激情久久影院 | 激情五月激情综合网 | 成年人电影免费在线观看 | 国产精品毛片久久 | 亚洲精品免费在线视频 | 99爱精品在线| 99这里有精品 | 久久国产午夜精品理论片最新版本 | 91精品日韩 | 亚洲另类在线视频 | 日韩精品国产一区 | 欧美a免费 | 精品九九九 | www成人av| 亚洲色图 校园春色 | 国产999在线观看 | 久久久久久久久久久久99 | 国产精品久久99精品毛片三a | 91久久精品一区二区三区 | 色综合中文综合网 | 在线一区av | 天天艹天天 | 日批视频在线播放 | 久久久久久久久久久久电影 | av在线播放观看 | 人人讲下载 | 日韩视频免费 | 日韩xxxxxxxxx | 国产最新视频在线 | av高清一区二区三区 | 久久情网 | 久久免费精品一区二区三区 | 婷婷伊人综合亚洲综合网 | 一区二区三区免费在线观看视频 | 草久电影| 99热在线国产 | 99视频99| 国产在线观看你懂得 | 在线中文字母电影观看 | 亚洲黄色在线免费观看 | 国产精品久久片 | 免费av大全| 在线观看中文字幕一区二区 | 97夜夜澡人人爽人人免费 | 一区二区观看 | 天天色综合1 | 成人超碰在线 | 香蕉网在线 | av一级二级 | 国产精品v欧美精品 | 久久8| 成人动漫一区二区 | www五月婷婷 | 人人爱在线视频 | 在线观看视频一区二区三区 | 国产精品美女久久久久久久 | 99国产一区二区三精品乱码 | 97视频在线免费 | 国产一区91| 伊人天堂av| 中文字幕中文字幕在线中文字幕三区 | 天天草天天爽 | 国产91丝袜在线播放动漫 | 精品国产欧美一区二区 | 99久久精品国产毛片 | 国产又粗又长又硬免费视频 | 久久人人艹 | 亚洲做受高潮欧美裸体 | 91在线蜜桃臀 | 国产小视频在线免费观看视频 | 日韩免费播放 | 最新久久久 | 婷婷网站天天婷婷网站 | aⅴ精品av导航 | 国产小视频在线免费观看视频 | 久久激情网站 | 在线观看黄色大片 | 免费日韩 精品中文字幕视频在线 | 亚洲精品综合一二三区在线观看 | 91桃色国产在线播放 | 国产69精品久久app免费版 | 精品麻豆入口免费 | 91在线影院| 首页国产精品 | 一区二区三区高清在线观看 | 国产精品免费视频一区二区 | 99re6热在线精品视频 | 在线精品在线 | 久久久.com| 西西444www大胆高清图片 | 国产激情久久久 | 国产成人精品一区二三区 | 日本久久免费电影 | 992tv在线观看网站 | 中文在线8新资源库 | 国产综合在线视频 | 亚洲欧洲国产日韩精品 | 日韩高清毛片 | 色综合久久五月 | 久久国产成人午夜av影院宅 | av免费看电影 | 啪啪免费视频网站 | 国产在线视频一区二区 | 日韩av免费一区 | 成 人 黄 色 片 在线播放 | 亚洲一区欧美精品 | 日韩久久精品一区二区 | 日韩激情片在线观看 | 色婷婷狠狠操 | 日韩精品久久久久 | 狠狠狠狠狠狠狠狠 | 麻豆精品国产传媒 | 日韩国产精品一区 | 国产精品18久久久久久不卡孕妇 | 国产手机视频在线播放 | 久久免费av电影 | 九九热免费视频在线观看 | 激情五月综合 | 国产精品久久久久久久久久久免费看 | 美女视频网 | 日韩a在线播放 | 2021久久| av大片免费 | 色干干 | 99久久精品午夜一区二区小说 | www.久久91| 91桃色免费视频 | 91x色| 国产精品一区欧美 | 精品自拍sae8—视频 | 欧美日韩一区二区三区在线观看视频 | 日本一区二区三区视频在线播放 | 中文字幕欧美日韩va免费视频 | 97在线免费观看视频 | 日本黄色大片免费看 | 日韩精品欧美一区 | 日本aaa在线观看 | 视频一区在线免费观看 | 免费观看成人 | 激情欧美一区二区三区免费看 | 亚洲欧洲日韩在线观看 | 成人国产网址 | 干综合网 | 久久久久久久久久久久久国产精品 | 91在线看视频免费 | 亚洲国产精品500在线观看 | 六月激情网 | 国产高清在线精品 | 国产字幕av | 丁香电影小说免费视频观看 | 特级毛片爽www免费版 | 亚洲精品久久久久中文字幕m男 | 国产精品夜夜夜一区二区三区尤 | 天天色 天天 | av片子在线观看 | 国产一级久久久 | 在线观看视频免费大全 | 国产精品久久久久久久久久白浆 | 91九色精品国产 | 婷婷在线网站 | 久久精品免费 | 色婷婷视频在线观看 | 三级黄色理论片 | 中文字幕影片免费在线观看 | 国产精品一区二区吃奶在线观看 | 一本大道久久精品懂色aⅴ 五月婷社区 | 国产69精品久久久久久 | av在线影片| 亚洲国产精品久久久久婷婷884 | 亚洲观看黄色网 | 成年美女黄网站色大片免费看 | 国产爽妇网 | 久久国产精品影片 | 午夜精品麻豆 | 国产精品日韩 | 玖玖玖在线 | 欧美日韩亚洲一 | 中文字幕在线字幕中文 | 亚洲专区在线 | 亚洲精品啊啊啊 | 黄在线| 久久97精品 | 开心色婷婷| 99精品视频在线免费观看 | 91综合久久一区二区 | 日韩精品一区二区三区视频播放 | 国产黄色视 | 中文字幕电影高清在线观看 | 午夜视频99 | 欧美a√在线 | 一区二区视频在线看 | 国产成人精品午夜在线播放 | 国产精品福利小视频 | 91精品对白一区国产伦 | 亚洲免费av一区二区 | 五月激情av | 国产护士av | www.91av在线 | 久久久久久久久久久免费视频 | 欧美一级视频在线观看 | 91新人在线观看 | 欧美一二三专区 | 久久在线精品 | 亚洲精品一区二区三区高潮 | 91成人在线观看高潮 | 久久国产精品一区二区 | 国产精品久久久久久久久久直播 | 免费的成人av | 美女网站在线播放 | 亚洲精品ww | 中文亚洲欧美日韩 | 韩国精品一区二区三区六区色诱 | 日韩字幕在线观看 | 欧美一级专区免费大片 | 国产精品综合av一区二区国产馆 | 国产精品高潮在线观看 | av福利在线 | 正在播放五月婷婷狠狠干 | 国产精品网站一区二区三区 | 日本精品一区二区 | 日韩精品一区二区三区在线播放 | 久久婷婷国产 | 国产超碰在线 | 欧美一二在线 | 国产一区视频导航 | 久久乐九色婷婷综合色狠狠182 | 欧洲精品码一区二区三区免费看 | 中文字幕一区二区三区乱码不卡 | 91视频啊啊啊 | 久久成人国产精品免费软件 | 亚洲精品国产精品国自产 | 日本午夜在线亚洲.国产 | 久久高清av | 中文字幕免费观看视频 | 国产精品爽爽久久久久久蜜臀 | 日韩视频在线不卡 | 国产亚洲精品久 | aa级黄色大片 | 久久久久北条麻妃免费看 | 97色婷婷成人综合在线观看 | 欧美精品在线观看免费 | 超碰在线1 | 91亚洲视频在线观看 | 五月婷婷天堂 | 日日夜夜狠狠操 | 欧美精品亚洲精品日韩精品 | 久久国产亚洲视频 | 福利视频一区二区 | 人人揉人人揉人人揉人人揉97 | 免费看一及片 | 美女黄视频免费看 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 夜夜躁狠狠躁日日躁 | 亚洲毛片久久 | 91探花在线视频 | 操操操日日日干干干 | 欧美一二区视频 | 国产精品观看在线亚洲人成网 | av在线专区| av高清在线观看 | 国产99久久久国产精品免费看 | 欧美a视频在线观看 | 在线 日韩 av | 欧美人体xx | 97香蕉久久超级碰碰高清版 | 国产亚洲免费观看 | 欧美一区免费观看 | 黄a网站| 黄色毛片电影 | 色久av | 成人试看120秒 | 欧美va天堂va视频va在线 | 亚洲免费公开视频 | 欧美在线观看视频一区二区 | 精品国产资源 | 久久久久久久久黄色 | 国产啊v在线观看 | 人人爱爱人人 | 东方av在| 欧美日韩在线观看一区二区 | 午夜精品一区二区三区视频免费看 | 久久久久久久久精 | 久久精品99久久久久久2456 | 久久激情小视频 | 中文有码在线视频 | 久久免费看 | 国产精品久久久久久久av电影 | 欧美日韩一区二区三区免费视频 | 公开超碰在线 | 在线色资源 | 国产精品毛片久久 | 综合久久久久久久久 | 国产精品一区二区av麻豆 | 日精品 | 菠萝菠萝在线精品视频 | 97精品国产97久久久久久 | 成人亚洲精品国产www | 精品国产人成亚洲区 | 日韩精品一区二区三区水蜜桃 | 黄色毛片视频 | 日韩视 | 久草在线手机视频 | 国产剧情一区二区 | 日日操操操 | 国产一级二级av | 91在线资源 | 日本在线观看中文字幕无线观看 | 天天操夜夜看 | 国产精久久久久久妇女av | 久久艹国产| 国产电影一区二区三区四区 | 国产精品中文字幕在线播放 | 国产精品成人一区二区三区吃奶 | 深夜福利视频在线观看 | 黄色av网站在线观看 | 国产精品久久久久国产精品日日 | 91毛片在线 | 夜夜操综合网 | 日韩三区在线 | 久草视频99 | 在线成人短视频 | 久久人人爽人人爽人人片av软件 | 97视频免费在线看 | 亚洲国产网址 | 综合av在线 | 99这里精品 | 日本字幕网 | 日韩av在线一区二区 | 一区二区三区四区五区在线视频 | 中文字幕日本特黄aa毛片 | 欧美精品在线免费 | 女人高潮一级片 | 久久综合影院 | 亚洲精品国精品久久99热一 | 99热最新网址 | 亚洲乱码在线 | 日韩精品视频免费专区在线播放 | 亚洲欧洲视频 | 国产aaa免费视频 | 国产激情免费 | 国产精品igao视频网入口 | 国产区精品在线观看 | 亚洲激精日韩激精欧美精品 | 国内视频在线 | 欧美日本在线视频 | 精品国产乱码一区二 | 国产精品成人久久久 | 欧美日韩不卡一区 | 精品视频不卡 | 欧美在线观看禁18 | 日韩一区二区久久 | 亚洲欧洲av在线 | 九九天堂| 欧美日韩视频精品 | 久久综合综合久久综合 | 免费视频久久久久 | 久久精品久久久久久久 | 日日麻批40分钟视频免费观看 | 国产成人一区二区三区电影 | 操天天操| 999成人| 91av九色| 干干夜夜 | 久久久久久久久久久久影院 | 91国内在线视频 | 97精品欧美91久久久久久 | 亚洲在线免费视频 | 国产日韩精品一区二区 | 亚洲男模gay裸体gay | 欧美性生爱 | 国产精品专区在线 | 国产精品精品国产婷婷这里av | 亚洲狠狠丁香婷婷综合久久久 | www日日 | 欧美,日韩| 97精品国产97久久久久久春色 | 亚洲在线不卡 | 午夜精品久久久久久99热明星 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 91观看视频 | 日本99久久 | 在线观看亚洲精品视频 | 97超碰伊人 | 亚洲最大激情中文字幕 | 亚洲午夜精 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 亚洲黄色av一区 | 日韩欧美网址 | 国产精品久久99综合免费观看尤物 | 色在线最新 | 亚洲国产中文字幕在线 | 国产你懂的在线 | 日本最新一区二区三区 | 天天综合网入口 | 99这里只有| 成人av在线网址 | 日韩中文字幕免费在线观看 | 色网址99| 天天色欧美| 亚洲精品18日本一区app | 国产视频在线免费 | 国产精品久久久久久欧美 | 视频一区二区精品 | 丁香婷婷久久 | 日本中文字幕在线免费观看 | 国产高清中文字幕 | 国产中的精品av小宝探花 | 亚洲最大av网站 | 亚洲精品高清在线 | 国产在线播放一区 | 激情黄色一级片 | 久久9视频| 国产99在线 | 96国产在线| 久草视频网 | 97偷拍视频| 日韩精品一二三 | av电影中文字幕在线观看 | 天天se天天cao天天干 | 夜夜躁日日躁 | 免费网站在线观看人 | 深夜福利视频一区二区 | 国产在线视频一区二区 | 操夜夜操 | 97电影手机版 | 日韩二区三区在线观看 | 亚洲va欧美va国产va黑人 | 亚洲天堂网站视频 | 欧美一区,二区 | 毛片网在线 | 欧美日韩免费一区二区 | 91毛片在线观看 | 久久理论片 | 97福利视频 | 国产亚洲精品福利 | 午夜视频一区二区三区 | 激情综合婷婷 | 日日摸日日添日日躁av | 日韩精品在线观看视频 | 精品久久久久久综合日本 | 国产精品免费观看网站 | 国产黄色看片 | 9i看片成人免费看片 | 亚洲欧美日韩在线一区二区 | 日韩电影一区二区在线观看 | 久久九九视频 | 久久九九精品 | 黄色成人影视 | 热久久精品在线 | 日本精品xxxx | 日日日网| 色狠狠狠 | 国产91精品高清一区二区三区 | 久久xx视频 | 久久色在线播放 | 最近中文字幕 | 国产亚洲综合在线 | 国产成人三级一区二区在线观看一 | 免费观看黄 | 免费久久视频 | 91av资源网 | 国产精品麻豆99久久久久久 | 久久艹影院 | 国产精品九九久久99视频 | 少妇bbb搡bbbb搡bbbb | 免费看十八岁美女 | 最近中文字幕免费观看 | 最新动作电影 | 五月天激情综合 | 午夜精品福利一区二区 | 一区二区三区日韩视频在线观看 | 视频在线一区二区三区 | 日本久久视频 | 久草| 91插插插网站| 成人av观看 | 欧美日韩一区二区视频在线观看 | 99色精品视频 | 日韩av男人的天堂 | 亚州五月| 91精品久久久久久综合乱菊 | 国产黄色资源 | 亚洲一一在线 | 天堂视频中文在线 | 国产韩国日本高清视频 | 在线观看免费黄视频 | 日韩在线观看av | 久久午夜免费观看 | 干 操 插| 亚洲精品中文字幕视频 | 香蕉影院在线播放 | 九九热精品视频在线播放 | 91久久国产综合精品女同国语 | 欧美日韩国产精品一区二区三区 | a在线观看免费视频 | 欧美精品黑人性xxxx | 国产精品一区二区果冻传媒 | www.看片网站 | 精品国产伦一区二区三区观看体验 | 91福利在线观看 | 欧美日韩精品在线一区二区 | 国产精品久久久久四虎 | 天天躁天天操 | 日韩午夜在线观看 | 欧美亚洲专区 | 久久综合婷婷 | 国模精品在线 | 最近高清中文字幕在线国语5 | 国产中文字幕视频在线观看 | 国产成人99久久亚洲综合精品 | 伊人狠狠操 | 九九九视频在线 | 日韩sese | 精品国产伦一区二区三区免费 | 99在线看| 正在播放五月婷婷狠狠干 | 久草爱| 国产精品免费一区二区 | 日本超碰在线 | 99精品免费久久久久久久久 | 亚洲成人av电影 | adn—256中文在线观看 | 一区二区三区电影大全 | 日韩精选在线 | 国产亚洲精品久久久久动 | 欧美一级大片在线观看 | av电影在线播放 | 99久久精品免费看国产一区二区三区 | 97超级碰碰碰视频在线观看 | 毛片99 | 成人精品久久久 | 欧美美女视频在线观看 | 91豆花在线观看 | 亚洲精品久久视频 | 国产成人三级一区二区在线观看一 | 中文字幕中文 | 日韩免费大片 | 国产 日韩 在线 亚洲 字幕 中文 | 久草在线免费看视频 | 欧美精品免费一区二区 | 久久综合九色综合欧美就去吻 | 狠狠艹夜夜干 | 麻豆视频一区 | 中文字幕在线观看免费 | 中文字幕在线视频免费播放 | 免费美女久久99 | 午夜丁香网 | 精品亚洲免费视频 | 99久久er热在这里只有精品66 | 日韩成人在线一区二区 | www色,com| 97在线免费| 久久天| 九九久久久久久久久激情 | 丁香 久久 综合 | 最近中文字幕大全中文字幕免费 | 天天综合网国产 | 中文字幕永久免费 | 九九九在线观看 | 麻豆视频成人 | 播五月婷婷| 国产精品久久久久久久久久东京 | 久久精品视频国产 | 日日激情| 亚洲午夜久久久久久久久 | 国产精品成人一区二区三区吃奶 | 亚洲日本中文字幕在线观看 | 亚洲激情 在线 | 久久免费播放视频 | 在线观看黄色的网站 | 国产精彩在线视频 | 欧美久久电影 | 成人动漫一区二区 | aⅴ视频在线 | 手机在线日韩视频 | av一区二区在线观看中文字幕 | 中中文字幕av | 夜色成人av| av电影在线观看完整版一区二区 | 91成人区| 亚洲第一av在线 | 亚洲精品播放 | 亚洲最新在线视频 | 国产在线中文 | 中文字幕av在线不卡 | 国产91精品一区二区麻豆亚洲 | 亚洲三级在线免费观看 | 国产亚洲资源 | 国产精品一区二区久久精品爱涩 | 国产不卡片 | 成人午夜精品福利免费 | 亚洲国产精品资源 | aaa日本高清在线播放免费观看 | 日韩精品在线播放 | 成人h动漫精品一区二 | 久久久久在线观看 | 久久综合久久久 | 国产91大片 | 高清av网站 | 国产精品久久久久久久久久免费看 | 婷婷天天色| 国产精品va视频 | 成av人电影 | 成人在线免费视频观看 | 日韩激情视频在线 | 麻豆一区在线观看 | 在线视频久久 | 五月天亚洲综合 | 天天拍天天操 | 亚洲天堂网视频在线观看 | 蜜臀av网站 | 亚洲欧美视频在线观看 | 99中文字幕 | 久草| 在线观看黄 | 国产精品永久免费视频 | 国产精品爽爽久久久久久蜜臀 | 久久99精品久久久久婷婷 | 日韩有码在线播放 | 久久精品99视频 | 成人性生活大片 | 激情综合亚洲 | 91麻豆看国产在线紧急地址 | 超碰伊人网 | 欧洲av在线 | 国产精品原创av片国产免费 | 国产亚洲午夜高清国产拍精品 | 91免费高清 | 国产精品9999久久久久仙踪林 | 日韩一区正在播放 | 999精品| 日韩综合第一页 | 丁香综合网 | 亚洲一级片av | 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产精品aⅴ | 国产精品99精品 | 亚洲精选在线观看 | 亚洲电影在线看 | 99精品视频在线免费观看 | 黄色大片中国 | 国产中文字幕一区二区 | 一区二区三区动漫 | 亚洲国内精品视频 | 国产专区视频在线 | 96超碰在线 | 婷婷六月激情 | 91精品国产高清自在线观看 | 黄色小网站免费看 | 狠狠色丁香婷综合久久 | 最新日韩在线观看视频 | 日夜夜精品视频 | 伊人成人精品 | aaa毛片视频 | 99婷婷狠狠成为人免费视频 | 久久99国产精品免费网站 | 国产麻豆视频在线观看 | 91试看 | 午夜私人影院久久久久 | 麻花豆传媒一二三产区 | 色综合婷婷久久 | 成人三级网站在线观看 | av片一区二区 | 欧美做受xxx | 国产精品 欧美 日韩 | 国产精品久久艹 | 91黄色视屏 | 国产精品欧美一区二区三区不卡 | 高清一区二区 | 久久国产精品精品国产色婷婷 | 超碰国产在线播放 | 久久精品视频国产 | 福利一区在线视频 | 国产精品久久久久久久免费 | 成人av中文字幕在线观看 | 国产私拍在线 | 92精品国产成人观看免费 | 9在线观看免费高清完整版在线观看明 | 伊人伊成久久人综合网小说 | 欧美大片大全 | 亚洲少妇激情 | 天堂在线一区二区 | se视频网址| 久久久久网站 | 在线а√天堂中文官网 | 狠狠色丁香久久综合网 | 国产日韩精品久久 | 国产精品theporn | 国产成人性色生活片 | 在线免费观看欧美日韩 | 五月丁色 | 国产一区免费看 | 亚洲精品88欧美一区二区 | 高清精品久久 | 天天操天天舔天天干 | 国产91电影在线观看 | 午夜精品久久久久久久久久久久久久 | 超碰在线日本 | 99re国产视频 | 欧美成a人片在线观看久 | 日韩黄色中文字幕 | 四虎国产精品永久在线国在线 | 日韩在线网 | 亚洲激情p | 久热av| 午夜国产一区二区 | 日韩av不卡在线播放 | 五月天高清欧美mv | 欧美精品久久久久久久久久久 | 人人讲| 综合色狠狠 | 精品一区二区6 | 欧美激情va永久在线播放 | 粉嫩高清一区二区三区 | a成人v| 美女av在线免费 | 欧洲精品久久久久毛片完整版 | 欧美色就是色 | 麻豆超碰| 欧美精品一区二区三区一线天视频 | 久久在线一区 | 日本精品一区二区三区在线观看 | 亚洲一区二区三区毛片 | 日韩欧美一区二区三区视频 | 久草在线播放视频 | 人人狠| 久久精品99精品国产香蕉 | 色网站黄 | 欧美一级免费高清 | av中文字幕不卡 | 色综合久久久久 | 亚洲日日射 | 在线国产视频观看 | 成年人免费看片网站 | 西西4444www大胆视频 | 久久影院一区 | 久久神马影院 | 黄网在线免费观看 | 91桃色国产在线播放 | 一区二区三区四区五区在线 | 日韩免费在线观看视频 | 日韩精品在线观看视频 | 免费看的黄色小视频 | 91成人精品一区在线播放69 | 久久综合色8888 | 在线精品亚洲一区二区 | 中文字幕一区在线观看视频 | 免费在线播放av电影 | 欧美婷婷综合 | 99色视频| 91看毛片 | 亚洲六月丁香色婷婷综合久久 | 久草香蕉在线视频 | 中文字幕在线视频网站 | av网站在线免费观看 | 97热久久免费频精品99 | 天天色综合1| 一区二区三区韩国免费中文网站 | 色噜噜狠狠狠狠色综合久不 | 国产亚洲精品精品精品 | 日躁夜躁狠狠躁2001 | 欧美色图88 | 99综合电影在线视频 | 中文字幕之中文字幕 | 国产专区视频在线观看 | 亚洲一区视频免费观看 | 久草在线在线视频 | 成人av午夜| 国产综合精品久久 | 欧美va天堂va视频va在线 | a v在线观看 | 国产精品久久9 | 在线精品亚洲一区二区 | 国产 欧美 在线 | 狠狠色噜噜狠狠狠 | 亚洲综合少妇 | 午夜久久影视 | 久草免费在线视频观看 | 蜜臀精品久久久久久蜜臀 | av电影一区| 中文字幕在 | 特级大胆西西4444www | 九九影视理伦片 | 中文字幕高清免费日韩视频在线 | 午夜手机电影 | 日韩视频免费观看高清完整版在线 | adn—256中文在线观看 | 日韩欧美在线中文字幕 | 久久久免费观看完整版 | 91精品成人久久 | 免费国产ww | 91av视频在线观看免费 | 日韩三级免费 | 日韩亚洲在线视频 | 欧美色操| 天天综合精品 | 夜夜爱av | 亚洲在线视频免费 | 久久久久久久影视 | www.99在线观看 | 五月婷婷激情综合 | 五月婷婷在线综合 | av解说在线观看 | 中文字幕在线免费观看视频 | 最近中文字幕免费大全 | 国产精品a久久久久 | 五月综合在线观看 | 黄污在线观看 | 久草在线这里只有精品 | 在线看片日韩 | 久草国产在线观看 | 91在线porny国产在线看 | av免费网站| 99精品在线免费观看 |