Android 百度地图之全局搜索周边搜索全国搜索城市路线规划(升级版附源码)
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                Android 百度地图之全局搜索周边搜索全国搜索城市路线规划(升级版附源码)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                這個是今年3月份做的,拿出來分享哈,之前的一篇結構單一,現在這個新增路線規劃:
路線1:無地鐵
路線2:時間快
路線3:少換乘
路線4:少步行
如下圖:
2.地點搜索(局部搜索)如下圖:
3 定位功能打開app即可定位如上圖
4 附近查找(還不完善)
5.搜索分頁功能
當搜索的結果大于10條會自動顯示上一頁,下一頁按鈕,如下圖:
基本功能介紹完畢,直接上代碼
mainactivity源碼:
?
package cn.yhsh.maptest;import java.util.ArrayList; import java.util.List;import utils.DrivingRouteOverlay; import utils.PoiOverlay; import utils.TransitRouteOverlay; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.Color; import android.graphics.Typeface; import android.graphics.drawable.ColorDrawable; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.util.Log; import android.view.Display; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.AnimationSet; import android.view.animation.RotateAnimation; import android.view.animation.ScaleAnimation; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.TextView; import android.widget.Toast;import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.location.LocationClientOption.LocationMode; import com.baidu.mapapi.SDKInitializer; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BaiduMap.OnMarkerClickListener; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.BitmapDescriptorFactory; 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.MapViewLayoutParams; import com.baidu.mapapi.map.Marker; import com.baidu.mapapi.map.MarkerOptions; import com.baidu.mapapi.map.MyLocationConfiguration; import com.baidu.mapapi.map.MyLocationData; import com.baidu.mapapi.map.TextOptions; import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.model.LatLngBounds; 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.PoiNearbySearchOption; import com.baidu.mapapi.search.poi.PoiResult; import com.baidu.mapapi.search.poi.PoiSearch; 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.WalkingRouteResult;public class MainActivity extends FragmentActivity implementsOnMarkerClickListener, OnClickListener, OnLongClickListener {double weidu = 39.9184470000;double jindu = 116.3252280000;// 這個是百度地圖公司的經緯度坐標點LatLng point = new LatLng(weidu, jindu);private IntentFilter filter;private MapView mv_maptest;public BaiduMap map;private View dialog_tv;private TextView tv_dialog;private EditText et_serach;private Button bt_search;private String et_result;private PoiInfo poiInfo;private LinearLayout ll_suofang;private LinearLayout llweixing;private LinearLayout ll_search;private EditText et_nearsearch;private String near_result;private AlertDialog alertDialog;private double latitude_result;private double longitude_result;private Builder dialog;private String str_city;private String str_search;private Button bt_xiayiye;private int index = 0;private Button bt_shangyiye;private boolean isShow = false;// 默認對話框關閉private EditText et_search_start;private EditText et_search_end;private String trim_start;private String trim_end;EditText et_search_middle;private String trim_middle;private AlertDialog create_road;private TransitPolicy ebusTimeFirst;private RadioGroup rg_group;private RadioGroup rg_jiache_huancheng;private RadioButton rb_transtrate_road1;private RadioButton rb_transtrate_road2;// 設置駕車路線換乘標示private int jiache = 11;private int huancheng = 12;private int jiache_huancheng = jiache;private RadioButton rb_nosubway;private RadioButton rb_time_first;private RadioButton rb_little_transtrate;private RadioButton rb_little_walking;int transfer_mode = 0;// 換乘方式自定義標示private String split_city = "北京";// 途中必須經過城市默認北京;// 切割后必須的城市出發目的地private String split_splans;// 切割后必須經過的地方public LocationClient mLocationClient = null;public BDLocationListener myListener = null;// 定位方法private ImageButton ib_location;private boolean open = false;//默認false去掉標尺//開啟定位后拿到的經緯度private double location_latitude;private double location_longitude;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// requestWindowFeature(Window.FEATURE_NO_TITLE);//去除標題欄initsdk();setContentView(R.layout.activity_main);// 拿到mapview控件設置默認縮放比例mv_maptest = (MapView) findViewById(R.id.mv_maptest);et_serach = (EditText) findViewById(R.id.et_serach);bt_search = (Button) findViewById(R.id.bt_search);Button bt_putong = (Button) findViewById(R.id.bt_putong);Button bt_weixing = (Button) findViewById(R.id.bt_weixing);Button bt_jiaotong = (Button) findViewById(R.id.bt_jiaotong);ImageButton ib_da = (ImageButton) findViewById(R.id.ib_da);ImageButton ib_xiao = (ImageButton) findViewById(R.id.ib_xiao);ll_suofang = (LinearLayout) findViewById(R.id.ll_suofang);llweixing = (LinearLayout) findViewById(R.id.llweixing);bt_xiayiye = (Button) findViewById(R.id.bt_xiayiye);bt_shangyiye = (Button) findViewById(R.id.bt_shangyiye);//初始化定位按鈕ib_location = (ImageButton)findViewById(R.id.ib_location);// 首先隱藏下一頁按鈕bt_xiayiye.setVisibility(View.GONE);bt_shangyiye.setVisibility(View.GONE);ll_search = (LinearLayout) findViewById(R.id.ll_serach);map = mv_maptest.getMap();MapStatusUpdate zoom = MapStatusUpdateFactory.zoomTo(14);// 設置地圖默認縮放比例為10(默認為12)map.setMapStatus(zoom);MapStatusUpdate center = MapStatusUpdateFactory.newLatLng(point);// 設置默認中心店map.setMapStatus(center);// 去掉縮放按鈕mv_maptest.showZoomControls(false);// 去掉標尺mv_maptest.showScaleControl(false);boolean menu = mv_maptest.showContextMenu();Log.e("測試", menu + "");// 寫文字drawtext();// 畫對話框在地圖上面通過點擊圖片后dialogpic();// ?圖片畫地圖上面drawpictuer();bt_search.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {index = 0;// 拿到輸入框的內容et_result = et_serach.getText().toString().trim();if (!et_result.equals("") && !et_result.equals(null)) {if (et_result.contains("_")) {// 如果是城市搜索格式。走城市搜索方法// 切割數據String[] split = et_result.split("_");str_city = split[0];str_search = split[1];citySearch();} else {// 不是城市搜索格式,走范圍內搜索方法// 搜索資源serachrescours();}Toast.makeText(MainActivity.this, et_result,Toast.LENGTH_LONG).show();} else {Toast.makeText(MainActivity.this, "請輸入數據再點擊查詢按鈕",Toast.LENGTH_LONG).show();}}});// 設置三個按鈕點擊事件tv_dialog.setOnClickListener(this);bt_putong.setOnClickListener(this);bt_weixing.setOnClickListener(this);bt_jiaotong.setOnClickListener(this);ib_da.setOnClickListener(this);ib_xiao.setOnClickListener(this);bt_xiayiye.setOnClickListener(this);bt_shangyiye.setOnClickListener(this);//設置定位圖標的點擊事件ib_location.setOnClickListener(this);/*** 長按放大按鈕隱藏縮放按鈕*/ib_da.setOnLongClickListener(this);bt_putong.setOnLongClickListener(this);tv_dialog.setOnLongClickListener(this);bt_search.setOnLongClickListener(this);bt_xiayiye.setOnLongClickListener(this);// 跳轉到路線查詢頁面// ib_xiao.setOnLongClickListener(this);mLocationClient = new LocationClient(getApplicationContext()); // 聲明LocationClient類myListener = new MyLocationListeners();mLocationClient.registerLocationListener(myListener); // 注冊監聽函數initLocation();// 定位的方法}/*** 換乘路線*/private void translateroad(String city, String plans_from, String plans_to,int select_int) {RoutePlanSearch rps = RoutePlanSearch.newInstance();rps.setOnGetRoutePlanResultListener(new MyOnGetRoutePlanResultListener());TransitRoutePlanOption transit_option = new TransitRoutePlanOption();transit_option.from(PlanNode.withCityNameAndPlaceName(city, plans_from));transit_option.to(PlanNode.withCityNameAndPlaceName(city, plans_to));// 史各莊經緯度// 設置所在城市transit_option.city(city);// 設置優選條件switch (select_int) {case 0:ebusTimeFirst = TransitPolicy.EBUS_NO_SUBWAY;// 少地鐵break;case 1:ebusTimeFirst = TransitPolicy.EBUS_TIME_FIRST;// 少耗時break;case 2:ebusTimeFirst = TransitPolicy.EBUS_TRANSFER_FIRST;// 少換乘break;case 3:ebusTimeFirst = TransitPolicy.EBUS_WALK_FIRST;// 少步行break;}transit_option.policy(ebusTimeFirst);rps.transitSearch(transit_option);// 發起換乘搜索}/*** 駕車路線初始化*/private void driverPlan(String city, String plans, String plans_from,String plans_to) {RoutePlanSearch rps = RoutePlanSearch.newInstance();rps.setOnGetRoutePlanResultListener(new MyOnGetRoutePlanResultListener());DrivingRoutePlanOption driver_option = new DrivingRoutePlanOption();// driver_option.from(PlanNode.withLocation(point_from));// driver_option.to(PlanNode.withLocation(point_to));//史各莊經緯度driver_option.from(PlanNode.withCityNameAndPlaceName(city, plans_from));driver_option.to(PlanNode.withCityNameAndPlaceName(city, plans_to));// 史各莊經緯度// 設置優選條件driver_option.policy(DrivingPolicy.ECAR_TIME_FIRST);// 時間優先if (plans != "" && plans != null) {List<PlanNode> roate_plans = new ArrayList<PlanNode>();roate_plans.add(PlanNode.withCityNameAndPlaceName(city, plans));// roate_plans.add(PlanNode.withCityNameAndPlaceName("北京", "西直門"));// 設置途經點driver_option.passBy(roate_plans);}rps.drivingSearch(driver_option);// 發起搜索}public class MyOnGetRoutePlanResultListener implementsOnGetRoutePlanResultListener {@Overridepublic void onGetBikingRouteResult(BikingRouteResult arg0) {// 獲取所有騎行規劃路線}@Overridepublic void onGetDrivingRouteResult(DrivingRouteResult result) {if (result == null|| result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {Toast.makeText(MainActivity.this, "未找到結果", Toast.LENGTH_LONG).show();return;} // Log.e("空指針",result.toString());// 開車路線DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(map);// 設置覆蓋物的點擊事件map.setOnMarkerClickListener(drivingRouteOverlay);drivingRouteOverlay.setData(result.getRouteLines().get(0));// 獲取開車路線后設置在地圖上顯示drivingRouteOverlay.addToMap();// 開車路線添加到地圖上drivingRouteOverlay.zoomToSpan();// 使搜索的結果在可視范圍內}@Overridepublic void onGetTransitRouteResult(TransitRouteResult result) {// 換乘路線結果if (result == null|| result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {Toast.makeText(MainActivity.this, "未找到結果", Toast.LENGTH_LONG).show();return;}TransitRouteOverlay tro = new TransitRouteOverlay(map);// List<TransitRouteLine> routeLines = arg0.getRouteLines();// for (int i = 0; i < routeLines.size(); i++) {// tro.setData(routeLines.get(i));// }// 設置數據tro.setData(result.getRouteLines().get(0)); // Log.e("空指針",result.getRouteLines().toString());tro.addToMap();// 開車路線添加到地圖上tro.zoomToSpan();// 使搜索的結果在可視范圍內}@Overridepublic void onGetWalkingRouteResult(WalkingRouteResult arg0) {// 步行}}/*** 在范圍內搜索的方法*/private void serachrescours() {PoiSearch poiS = PoiSearch.newInstance();// 創建對象poiS.setOnGetPoiSearchResultListener(new Mypoisearch());PoiBoundSearchOption fanwei = new PoiBoundSearchOption();LatLngBounds llbs = new LatLngBounds.Builder().include(new LatLng(40.7460400000, 114.9219870000)).include(new LatLng(38.9954100000, 117.7206750000)).build();fanwei.bound(llbs).keyword(et_result);// 搜索的內容// 設置下一頁數據fanwei.pageNum(index);// 發起范圍內搜索poiS.searchInBound(fanwei);}class Mypoisearch implements OnGetPoiSearchResultListener {@Overridepublic void onGetPoiDetailResult(PoiDetailResult arg0) {}@Overridepublic void onGetPoiResult(PoiResult result) {if (result == null|| result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {Toast.makeText(MainActivity.this, "未找到結果", Toast.LENGTH_LONG).show();return;}// 返回全城查找結果int currentPageNum = result.getCurrentPageNum() + 1;// 獲取當前頁數int totalPageNum = result.getTotalPageNum();// 獲取總共頁數int currentPageCapacity = result.getCurrentPageCapacity();// 獲取當前頁顯示個數int totalPoiNum = result.getTotalPoiNum();// 獲取總條數if (totalPoiNum > 10) {bt_xiayiye.setVisibility(View.VISIBLE);bt_shangyiye.setVisibility(View.VISIBLE);llweixing.setVisibility(View.GONE);// 隱藏衛星地圖} else {bt_xiayiye.setVisibility(View.GONE);bt_shangyiye.setVisibility(View.GONE);llweixing.setVisibility(View.VISIBLE);// 顯示衛星地圖}// 返回搜索結果if (index + 1 >= totalPageNum && totalPageNum != 1) {index = totalPageNum;Toast.makeText(getApplicationContext(), "已經到最后一頁了。",Toast.LENGTH_SHORT).show();} else if (index != 0 && index != totalPageNum) {Toast.makeText(getApplicationContext(),"當前為第" + currentPageNum + "頁:總頁數為" + totalPageNum+ ":當前頁顯示個數為" + currentPageCapacity+ "個:總結果條數為" + totalPoiNum + "條",Toast.LENGTH_SHORT).show();}// 在創建覆蓋物之前清除上一頁的覆蓋物map.clear();// 清除覆物PoiOverlay pioo = new MyPoiOverlay(map);// 設置覆蓋物marker點擊事件map.setOnMarkerClickListener(pioo);// 設置數據pioo.setData(result);// 添加地圖pioo.addToMap();// 縮小到搜索到的位置pioo.zoomToSpan();}// 寫一類繼承PoiOverlayclass MyPoiOverlay extends PoiOverlay {public MyPoiOverlay(BaiduMap baiduMap) {super(baiduMap);}/** 重寫onPoiClick點擊事件方法*/@Overridepublic boolean onPoiClick(int i) {// 拿到結果PoiResult poiResult = getPoiResult();poiInfo = poiResult.getAllPoi().get(i);// 拿到搜索結果的經緯度latitude_result = poiInfo.location.latitude;longitude_result = poiInfo.location.longitude;// 彈出吐司顯示點中的點擊事件Toast.makeText(getApplicationContext(),poiInfo.city + " " + poiInfo.name + " "+ poiInfo.address, Toast.LENGTH_LONG).show();// 彈出populowindowshowPopupWindow(getCurrentFocus());// showPopupWindow(mv_maptest);// 彈出附近搜索對話框showDialog_NearSearch();return super.onPoiClick(i);}}}/*** 顯示popupwindow的方法*/private void showPopupWindow(View view) {// 一個自定義的布局,作為顯示的內容View contentView = View.inflate(getApplicationContext(),R.layout.activity_popupwindow, null);// 設置按鈕的點擊事件TextView button_popuowindow = (TextView) contentView.findViewById(R.id.tv_popuowindow);button_popuowindow.setText(poiInfo.city + " " + poiInfo.name + " "+ poiInfo.address);button_popuowindow.setTextColor(Color.BLUE);button_popuowindow.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(getApplicationContext(),"歡迎使用揚宏豕慧官網修改版本地圖,更多請訪問揚宏豕慧官方網站http://www.iyhsh.faisco.cn",Toast.LENGTH_SHORT).show();}});final PopupWindow popupWindow = new PopupWindow(contentView,LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, true);popupWindow.setTouchable(true);popupWindow.setTouchInterceptor(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {return false;// 這里如果返回true的話,touch事件將被攔截// 攔截后 PopupWindow的onTouchEvent不被調用,這樣點擊外部區域無法dismiss}});// 如果不設置PopupWindow的背景,無論是點擊外部區域還是Back鍵都無法dismiss彈框// 我覺得這里是API的一個bug// popupWindow.setBackgroundDrawable(getResources().getDrawable(// R.drawable.toum));popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));// 設置背景顏色為透明色// getResources().getDrawable(R.drawable.toum).setAlpha(0);// 設置圖片透明度為0// 設置好參數之后再show// int[] location = new int [2];// view.getLocationInWindow(location);// int x = location[0];// int y = location[1];// popupWindow.showAtLocation(view, Gravity.CENTER_HORIZONTAL, x, y);popupWindow.showAsDropDown(view);// 此方法也可以// 縮放動畫ScaleAnimation scanim = new ScaleAnimation(0, 1, 0, 1,Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 1.0f);scanim.setDuration(4000);// 四秒鐘// 漸變動畫AlphaAnimation apap = new AlphaAnimation(0.1f, 1.0f);apap.setDuration(4000);// 旋轉動畫RotateAnimation ra = new RotateAnimation(0, 360,Animation.RELATIVE_TO_SELF, 0.1f, Animation.RELATIVE_TO_SELF,0.1f);ra.setDuration(4000);ra.setFillAfter(true);// 動畫執行完后是否停留在執行完的狀態// 組合動畫AnimationSet ams = new AnimationSet(true);// 共享動畫插入器// 添加組合動畫ams.addAnimation(ra);ams.addAnimation(scanim);ams.addAnimation(apap);// 開啟動畫效果contentView.startAnimation(ams);}private void dialogpic() {dialog_tv = View.inflate(getApplicationContext(),R.layout.activity_dialogpic, null);MapViewLayoutParams params = new MapViewLayoutParams.Builder().layoutMode(MapViewLayoutParams.ELayoutMode.mapMode).position(point).width(MapViewLayoutParams.WRAP_CONTENT).height(MapViewLayoutParams.WRAP_CONTENT).build();mv_maptest.addView(dialog_tv, params);dialog_tv.setVisibility(View.INVISIBLE);// 首先隱藏tv_dialog = (TextView) dialog_tv.findViewById(R.id.tv_dialog);map.setOnMarkerClickListener(this);// 設置點擊事件}// 打開之前先檢驗key的正確與否private void initsdk() {// 注冊廣播filter = new IntentFilter();filter.addAction(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR);// 網絡連接錯誤filter.addAction(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR);// 校驗失敗registerReceiver(new Mybraodcast(), filter);SDKInitializer.initialize(getApplicationContext());}class Mybraodcast extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();// 判斷是否成功if (isNetworkAvailable(MainActivity.this)) {if (action.equals(SDKInitializer.SDK_BROADTCAST_ACTION_STRING_PERMISSION_CHECK_ERROR)) {Toast.makeText(getApplicationContext(), "校驗錯誤。請檢查校驗碼是否正確。",Toast.LENGTH_LONG).show();} else {if (action.equals(SDKInitializer.SDK_BROADCAST_ACTION_STRING_NETWORK_ERROR)) {Toast.makeText(getApplicationContext(),"網絡錯誤。請檢查網絡是否在正常。", Toast.LENGTH_LONG).show();}}}}}// 設置地圖圖層@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {switch (keyCode) {case KeyEvent.KEYCODE_1:map.setMapType(BaiduMap.MAP_TYPE_NORMAL);// 底圖map.setTrafficEnabled(false);// 關閉交通圖break;case KeyEvent.KEYCODE_2:map.setMapType(BaiduMap.MAP_TYPE_SATELLITE);// 衛星地圖map.setTrafficEnabled(false);// 關閉交通圖break;case KeyEvent.KEYCODE_3:map.setTrafficEnabled(true);// 打開交通圖break;case KeyEvent.KEYCODE_4:MapStatusUpdate zoomin = MapStatusUpdateFactory.zoomIn();// 一級一級縮放// 放大map.setMapStatus(zoomin);break;case KeyEvent.KEYCODE_5:MapStatusUpdate zoomout = MapStatusUpdateFactory.zoomOut();// 一級一級縮放// 縮小map.setMapStatus(zoomout);break;case KeyEvent.KEYCODE_6:float jiaodu = map.getMapStatus().rotate;MapStatus roates = new MapStatus.Builder().rotate(jiaodu + 15).build();MapStatusUpdate roate = MapStatusUpdateFactory.newMapStatus(roates);// 旋轉map.setMapStatus(roate);break;case KeyEvent.KEYCODE_7:float jiaodus = map.getMapStatus().overlook;MapStatus roatelines = new MapStatus.Builder().overlook(jiaodus - 5).build();MapStatusUpdate roateline = MapStatusUpdateFactory.newMapStatus(roatelines);// 一條線旋轉map.setMapStatus(roateline);break;case KeyEvent.KEYCODE_8:MapStatusUpdate move = MapStatusUpdateFactory.newLatLng(new LatLng(39.9899560000, 116.3230660000));// 中關村地鐵經緯度坐標// 移動map.animateMapStatus(move);break;case KeyEvent.KEYCODE_9:MapStatusUpdate center = MapStatusUpdateFactory.newLatLng(point);// 設置默認中心店map.setMapStatus(center);break;}return super.onKeyDown(keyCode, event);}/*** 檢測網絡是否可用* * @return*/// public boolean isNetworkConnected() {// ConnectivityManager cm = (ConnectivityManager)// getSystemService(Context.CONNECTIVITY_SERVICE);// NetworkInfo ni = cm.getActiveNetworkInfo();// return ni != null && ni.isConnectedOrConnecting();// }public static boolean isNetworkAvailable(Activity activity) {Context context = activity.getApplicationContext();// 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理)ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);if (connectivityManager == null) {return false;} else {// 獲取NetworkInfo對象NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();if (networkInfo != null && networkInfo.length > 0) {for (int i = 0; i < networkInfo.length; i++) {// 判斷當前網絡狀態是否為連接狀態if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) {return true;}}}}return false;}// 在中心點地圖位置寫文字標注信息private void drawtext() {TextOptions text = new TextOptions();text.position(point).// 需要標注的點的經緯度bgColor(0x01ffffff).// 文字背景色fontColor(0x99ff0000).// 文字顏色fontSize(24).// 字體大小text("北京創和世紀通訊技術股份有限公司").// 文字信息typeface(Typeface.MONOSPACE).// 安卓字體rotate(0);// .visible(false);//旋轉45°,隱藏文字信息map.addOverlay(text);// 將文字信息添加到地圖上面}/*** 畫圖片在地圖上面*/private void drawpictuer() {MarkerOptions pictuer = new MarkerOptions();// 設置坐標位置pictuer.position(new LatLng(weidu + 0.005, jindu - 0.0005)).title("揚宏豕慧官方店鋪(長按此處可以搜索全局\n點擊此處可隱藏搜索框)").icon(BitmapDescriptorFactory.fromResource(R.drawable.caiguan));map.addOverlay(pictuer);pictuer.position(new LatLng(weidu + 0.02, jindu + 0.005)).title("揚宏豕慧店鋪(長按此處可以搜索全局\n點擊此處可隱藏搜索框)").icon(BitmapDescriptorFactory.fromResource(R.drawable.caiguan)).draggable(true);// 可以被拖拽map.addOverlay(pictuer);ArrayList<BitmapDescriptor> pic = new ArrayList<BitmapDescriptor>();pic.add(BitmapDescriptorFactory.fromResource(R.drawable.caiguan));pic.add(BitmapDescriptorFactory.fromResource(R.drawable.ya));pic.add(BitmapDescriptorFactory.fromResource(R.drawable.wifi));pic.add(BitmapDescriptorFactory.fromResource(R.drawable.jia));pictuer.position(new LatLng(weidu + 0.002, jindu - 0.0085)).title("揚宏豕慧周黑鴨(長按此處可以搜索全局\n點擊此處可隱藏搜索框)").icons(pic).draggable(true);// 可以被拖拽map.addOverlay(pictuer);}/*** 設置覆蓋物的點擊事件*/@Overridepublic boolean onMarkerClick(Marker marker) {MapViewLayoutParams params = new MapViewLayoutParams.Builder().layoutMode(MapViewLayoutParams.ELayoutMode.mapMode).position(marker.getPosition()).width(MapViewLayoutParams.WRAP_CONTENT).height(MapViewLayoutParams.WRAP_CONTENT).yOffset(-40).// 標示在點中的物體上面10距離build();mv_maptest.updateViewLayout(dialog_tv, params);tv_dialog.setText(marker.getTitle());dialog_tv.setVisibility(View.VISIBLE);// 點擊后顯示對話框return true;// 標示消費}// 衛星圖切換功能@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_putong:map.setMapType(BaiduMap.MAP_TYPE_NORMAL);// 底圖map.setTrafficEnabled(false);// 關閉交通圖break;case R.id.bt_weixing:map.setMapType(BaiduMap.MAP_TYPE_SATELLITE);// 衛星地圖map.setTrafficEnabled(false);// 關閉交通圖break;case R.id.bt_jiaotong:map.setTrafficEnabled(true);// 打開交通圖break;case R.id.ib_da:MapStatusUpdate zoomin = MapStatusUpdateFactory.zoomIn();// 一級一級縮放// 放大map.setMapStatus(zoomin);// 放大地圖break;case R.id.ib_xiao:MapStatusUpdate zoomout = MapStatusUpdateFactory.zoomOut();// 一級一級縮放// 縮小map.setMapStatus(zoomout);// 縮小地圖break;case R.id.tv_dialog:// ll_search.setVisibility(View.GONE);// 隱藏搜索框// 彈出附近搜索框showDialog_NearSearch();break;case R.id.bt_nearsearch:// 附近查找功能nearSearchOk();break;case R.id.bt_xiayiye:// 顯示下一頁數據// Toast.makeText(getApplicationContext(), "下一頁數據",// Toast.LENGTH_LONG).show();index++;dialog_edittext_city_search();break;case R.id.bt_shangyiye:if (index >= 1) {index--;} else {index = 0;Toast.makeText(getApplicationContext(), "已經是首頁了。",Toast.LENGTH_SHORT).show();}dialog_edittext_city_search();break;case R.id.ib_location://點擊后調頭定位方法initLocation(); // BitmapDescriptor location_icon = BitmapDescriptorFactory.fromResource(R.drawable.dingwei_icon);//自定義定位圖標MyLocationConfiguration config = new MyLocationConfiguration(MyLocationConfiguration.LocationMode.FOLLOWING, true, null);//null表示默認圖標//點擊后讓定位點回到地圖中心map.setMyLocationConfigeration(config);//恢復默認縮放MapStatusUpdate zoom = MapStatusUpdateFactory.zoomTo(16);// 設置地圖默認縮放比例為10(默認為12)map.setMapStatus(zoom);open = true;if (open) {mv_maptest.showScaleControl(true);//打開標尺}}}/*** 區分對話框附近搜索。城市搜索,范圍內搜索方法*/private void dialog_edittext_city_search() {if (isShow) {// 當點擊附近搜索按鈕的時候拿到數據進行查找near_result = et_nearsearch.getText().toString().trim();if (!near_result.equals("") && !near_result.equals(null)) {// 將輸入框設置為空et_serach.setText(near_result);nearSearch();Toast.makeText(MainActivity.this, "搜索情況如下:", Toast.LENGTH_LONG).show();// 自動關閉對話框alertDialog.dismiss();isShow = false;}}// 拿到輸入框的內容et_result = et_serach.getText().toString().trim();// 搜索之前判斷數據是否可用if (et_result.contains("_")) {// 如果是城市搜索格式。走城市搜索方法// 切割數據String[] split = et_result.split("_");str_city = split[0];str_search = split[1];citySearch();} else {// 不是城市搜索格式,走范圍內搜索方法// 搜索資源serachrescours();}// citySearch();//再次調用城市搜索方法// break;}/*** 彈出附近搜索對話框*/private void showDialog_NearSearch() {AlertDialog.Builder alert = new Builder(this);if (poiInfo != null) {dialog = alert.setTitle("附近查找").setMessage(poiInfo.address);} else {dialog = alert.setTitle("附近查找").setMessage(point.toString());}View nearserach_view = View.inflate(getApplicationContext(),R.layout.activity_nearsearch, null);Button bt_nearsearch = (Button) nearserach_view.findViewById(R.id.bt_nearsearch);et_nearsearch = (EditText) nearserach_view.findViewById(R.id.et_nearserach);bt_nearsearch.setOnClickListener(this);alert.setView(nearserach_view);// 縮放動畫ScaleAnimation scanim = new ScaleAnimation(0, 1, 0, 1,Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 1.0f);scanim.setDuration(4000);// 四秒鐘nearserach_view.startAnimation(scanim);alertDialog = dialog.create();alertDialog.setView(nearserach_view);alertDialog.show();// 當對話框出來后做標示isShow = true;}private void nearSearchOk() {// 當點擊搜索按鈕的時候拿到數據進行查找near_result = et_nearsearch.getText().toString().trim();// 判斷是否為空if (!near_result.equals("") && !near_result.equals(null)) {nearSearch();Toast.makeText(MainActivity.this, "搜索情況如下:", Toast.LENGTH_LONG).show();// 自動關閉對話框alertDialog.dismiss();} else {Toast.makeText(MainActivity.this, "請輸入數據再點擊查詢按鈕", Toast.LENGTH_LONG).show();}}private void nearSearch() {PoiSearch poiS = PoiSearch.newInstance();// 創建對象poiS.setOnGetPoiSearchResultListener(new Mypoisearch());PoiNearbySearchOption pso = new PoiNearbySearchOption();pso.keyword(near_result).location(new LatLng(latitude_result, longitude_result)).radius(10000);// 設置下一頁數據pso.pageNum(index);// 設置清除上一頁顯示的數據map.clear();// 發起范圍內搜索poiS.searchNearby(pso);}/*** 城市內搜索*/private void citySearch() {PoiSearch citys = PoiSearch.newInstance();citys.setOnGetPoiSearchResultListener(new Mypoisearch());PoiCitySearchOption pcso = new PoiCitySearchOption();// 設置搜索范圍城市pcso.city(str_city).keyword(str_search);pcso.pageNum(index);// 設置當前第幾頁citys.searchInCity(pcso);// 發起城市搜索}@SuppressWarnings("deprecation")@Overridepublic boolean onLongClick(View v) {switch (v.getId()) {case R.id.ib_da:ll_suofang.setVisibility(View.GONE);// 隱藏縮放按鈕break;case R.id.bt_putong:llweixing.setVisibility(View.GONE);// 隱藏衛星地圖切換break;case R.id.tv_dialog:ll_search.setVisibility(View.VISIBLE);// 顯示搜索框llweixing.setVisibility(View.VISIBLE);// 顯示維修地圖按鈕ll_suofang.setVisibility(View.VISIBLE);// 顯示縮放按鈕break;case R.id.bt_search:// 設置標示駕車還是路線換乘jiache_huancheng = jiache;// ll_search.setVisibility(View.GONE);// 隱藏搜索框// 跳到路線搜索頁面View inflate_road_search = View.inflate(getApplicationContext(),R.layout.activity_road_search, null);et_search_start = (EditText) inflate_road_search.findViewById(R.id.et_search_start);et_search_end = (EditText) inflate_road_search.findViewById(R.id.et_search_end);et_search_middle = (EditText) inflate_road_search.findViewById(R.id.et_search_middle);Button et_search_ok = (Button) inflate_road_search.findViewById(R.id.et_search_ok);rg_jiache_huancheng = (RadioGroup) inflate_road_search.findViewById(R.id.rg_jiache_huancheng);// 隱藏換乘布局rg_jiache_huancheng.setVisibility(View.GONE);// 初始化換乘控件rg_group = (RadioGroup) inflate_road_search.findViewById(R.id.rg_group);rb_transtrate_road1 = (RadioButton) inflate_road_search.findViewById(R.id.rb_transtrate_road1);rb_transtrate_road2 = (RadioButton) inflate_road_search.findViewById(R.id.rb_transtrate_road2);rb_nosubway = (RadioButton) inflate_road_search.findViewById(R.id.rb_nosubway);rb_time_first = (RadioButton) inflate_road_search.findViewById(R.id.rb_time_first);rb_little_transtrate = (RadioButton) inflate_road_search.findViewById(R.id.rb_little_transtrate);rb_little_walking = (RadioButton) inflate_road_search.findViewById(R.id.rb_little_walking);rb_transtrate_road1.setBackgroundColor(Color.rgb(238, 169, 184));AlertDialog.Builder road_dialog = new Builder(this);road_dialog.setView(inflate_road_search);create_road = road_dialog.create();// 設置換乘點擊事件// create_road.show();// 顯示對話框rg_group.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// 設置兩個背景選中色switch (checkedId) {case R.id.rb_transtrate_road1:et_search_middle.setVisibility(View.VISIBLE);// 打開中途必須經過地// 設置標示駕車還是路線換乘jiache_huancheng = jiache;rb_transtrate_road1.setBackgroundColor(Color.rgb(238,169, 184));rb_transtrate_road2.setBackgroundColor(0x99ffffff);rg_jiache_huancheng.setVisibility(View.GONE);break;case R.id.rb_transtrate_road2:et_search_middle.setVisibility(View.GONE);// 隱藏中途必須經過地// 設置標示駕車還是路線換乘jiache_huancheng = huancheng;// 當選擇了換乘,那就默認換乘方式為無地鐵transfer_mode = 0;// 切換fragment// getSupportFragmentManager().beginTransaction().replace(R.id.ll_jiache,// new TranstrateFragment()).commit();rg_jiache_huancheng.setVisibility(View.VISIBLE);rb_transtrate_road1.setBackgroundColor(0x99ffffff);rb_transtrate_road2.setBackgroundColor(Color.rgb(238,169, 184));// 第一個默認綠色rb_nosubway.setBackgroundColor(Color.rgb(144, 238, 144));// 設置換乘方式標示rg_jiache_huancheng.setOnCheckedChangeListener(new OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {// 其他三個恢復初始化白色rb_nosubway.setBackgroundColor(0x99ffffff);rb_time_first.setBackgroundColor(0x99ffffff);rb_little_transtrate.setBackgroundColor(0x99ffffff);rb_little_walking.setBackgroundColor(0x99ffffff);switch (checkedId) {case R.id.rb_nosubway:transfer_mode = 0;rb_nosubway.setBackgroundColor(Color.rgb(144, 238, 144));break;case R.id.rb_time_first:transfer_mode = 1;rb_time_first.setBackgroundColor(Color.rgb(144, 238, 144));break;case R.id.rb_little_transtrate:transfer_mode = 2;rb_little_transtrate.setBackgroundColor(Color.rgb(144, 238, 144));break;case R.id.rb_little_walking:transfer_mode = 3;rb_little_walking.setBackgroundColor(Color.rgb(144, 238, 144));break;}}});break;}// 設置默認選中駕車按鈕// rg_group.check(R.id.rb_transtrate_road1);}});// 設置點擊事件et_search_ok.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// 拿到搜索框數據判斷搜索trim_start = et_search_start.getText().toString().trim();trim_end = et_search_end.getText().toString().trim();trim_middle = et_search_middle.getText().toString().trim();// 判斷中途經過的地方是否為空if (!trim_middle.equals("") && trim_middle != null) {// 判斷格式是否正確if (trim_middle.contains("_")) {// 切割String[] split_result = trim_middle.split("_");// 判斷輸入長度if (split_result.length == 1) {split_city = split_result[0];split_splans = "";} else if (split_result.length > 1) {split_city = split_result[0];split_splans = split_result[1];}} else {Toast.makeText(getApplicationContext(),"中途必過地點格式輸入有誤!\n例如:北京_西直門",Toast.LENGTH_SHORT).show();return;}}// 判斷兩個數據if (!trim_start.equals("") && !trim_start.equals(null)&& !trim_end.equals("") && !trim_end.equals(null)) {// 將輸入框的兩個數據傳到路線查找框中map.clear();// 搜索之前清除之前的搜索路線// 判斷是駕車還是換乘if (jiache_huancheng == jiache) {// 走駕車方法driverPlan(split_city, split_splans, trim_start,trim_end);} else if (jiache_huancheng == huancheng) {// 走換乘方法transfer_mode標示translateroad("北京", trim_start, trim_end,transfer_mode);}// 隱藏對話框create_road.dismiss();} else {Toast.makeText(getApplicationContext(),"請輸入起始終點在進行查詢。", Toast.LENGTH_SHORT).show();}}});create_road.show();// 顯示對話框// WindowManager.LayoutParams params =// create_road.getWindow().getAttributes();// params.width = LayoutParams.MATCH_PARENT;// params.height = 400 ;// create_road.getWindow().setAttributes(params);/** 將對話框的大小按屏幕大小的百分比設置*/WindowManager m = getWindowManager();Display d = m.getDefaultDisplay(); // 獲取屏幕寬、高用WindowManager.LayoutParams p = create_road.getWindow().getAttributes(); // 獲取對話框當前的參數值p.height = (int) (d.getHeight() * 0.5); // 高度設置為屏幕的0.6p.width = (int) (d.getWidth() * 1.0); // 寬度設置為屏幕的0.65create_road.getWindow().setAttributes(p);// Window window = create_road.getWindow();// WindowManager.LayoutParams lp = window.getAttributes();// lp.gravity = Gravity.CENTER;// lp.width = LayoutParams.MATCH_PARENT;//寬高可設置具體大小// lp.height = LayoutParams.MATCH_PARENT;// create_road.getWindow().setAttributes(lp);break;case R.id.bt_xiayiye:bt_xiayiye.setVisibility(View.GONE);bt_shangyiye.setVisibility(View.GONE);llweixing.setVisibility(View.VISIBLE);// 隱藏下一頁,顯示衛星按鈕break;// case R.id.ib_xiao:// // 初始化駕車路線// driverPlan("北京", "", "生命科學園", "軍事博物館");}return true;}/*** 定位的方法*/private void initLocation() {LocationClientOption option = new LocationClientOption();option.setLocationMode(LocationMode.Hight_Accuracy);// 可選,默認高精度,設置定位模式,高精度,低功耗,僅設備option.setCoorType("bd09ll");// 可選,默認gcj02,設置返回的定位結果坐標系int span = 1000;option.setScanSpan(span);// 可選,默認0,即僅定位一次,設置發起定位請求的間隔需要大于等于1000ms才是有效的option.setIsNeedAddress(true);// 可選,設置是否需要地址信息,默認不需要option.setOpenGps(true);// 可選,默認false,設置是否使用gpsoption.setLocationNotify(true);// 可選,默認false,設置是否當gps有效時按照1S1次頻率輸出GPS結果option.setIsNeedLocationDescribe(true);// 可選,默認false,設置是否需要位置語義化結果,可以在BDLocation.getLocationDescribe里得到,結果類似于“在北京天安門附近”option.setIsNeedLocationPoiList(true);// 可選,默認false,設置是否需要POI結果,可以在BDLocation.getPoiList里得到option.setIgnoreKillProcess(false);// 可選,默認true,定位SDK內部是一個SERVICE,并放到了獨立進程,設置是否在stop的時候殺死這個進程,默認不殺死option.SetIgnoreCacheException(false);// 可選,默認false,設置是否收集CRASH信息,默認收集option.setEnableSimulateGps(false);// 可選,默認false,設置是否需要過濾gps仿真結果,默認需要mLocationClient.setLocOption(option);}@Overrideprotected void onStart() {//開啟定位mLocationClient.start();super.onStart();}@Overrideprotected void onPause() {//失去焦點的時候,停止定位,省電,省流量mLocationClient.stop();mv_maptest.onPause();mv_maptest.showScaleControl(false);//關閉標尺super.onPause();}@Overrideprotected void onResume() {mv_maptest.onResume();super.onResume();}@Overrideprotected void onDestroy() {mv_maptest.onDestroy();super.onDestroy();}public class MyLocationListeners implements BDLocationListener{@Overridepublic void onReceiveLocation(BDLocation location_result) {//拿到定位的經緯度location_latitude = location_result.getLatitude();location_longitude = location_result.getLongitude();MyLocationData location_data = new MyLocationData.Builder().latitude(location_latitude).longitude(location_longitude).build();//在定位生效之前調用下面一句。地圖層生效map.setMyLocationEnabled(true);//打開圖層map.setMyLocationData(location_data);}} }?
?
?
?
?
在貼出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" ><com.baidu.mapapi.map.MapViewandroid:id="@+id/mv_maptest"android:layout_width="match_parent"android:layout_height="match_parent" ></com.baidu.mapapi.map.MapView><LinearLayoutandroid:id="@+id/ll_serach"android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal" ><!-- ##e0ffffff半透明背景色顏色 android:alpha="0.5"透明方法 --><EditTextandroid:id="@+id/et_serach"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:alpha="0.5"android:gravity="center"android:hint="城市搜索格式:北京_加油站\n(長按可搜索路線)"android:textSize="16sp" /><Buttonandroid:id="@+id/bt_search"android:layout_width="wrap_content"android:layout_height="wrap_content"android:alpha="0.5"android:text="搜索/路線" /></LinearLayout><LinearLayoutandroid:id="@+id/llweixing"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_alignParentRight="true"android:alpha="0.5" ><Buttonandroid:id="@+id/bt_putong"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="普通地圖" /><Buttonandroid:id="@+id/bt_weixing"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="衛星地圖" /><Buttonandroid:id="@+id/bt_jiaotong"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="交通地圖" /></LinearLayout><Buttonandroid:layout_alignParentLeft="true"android:layout_margin="3dp"android:id="@+id/bt_shangyiye"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:alpha="0.5"android:text="上一頁" /><Buttonandroid:layout_margin="3dp"android:id="@+id/bt_xiayiye"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_alignParentRight="true"android:alpha="0.5"android:text="下一頁" /><LinearLayoutandroid:id="@+id/ll_suofang"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentRight="true"android:layout_centerInParent="true"android:layout_marginRight="5dp"android:orientation="vertical" ><ImageButtonandroid:id="@+id/ib_da"android:layout_width="wrap_content"android:layout_height="wrap_content"android:alpha="0.5"android:src="@drawable/da" /><ImageButtonandroid:id="@+id/ib_xiao"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="30dp"android:alpha="0.5"android:src="@drawable/xiao" /></LinearLayout><ImageButton android:id="@+id/ib_location"android:alpha="0.5"android:layout_marginBottom="60dp"android:layout_marginRight="5dp"android:layout_alignParentRight="true"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/dingwei"android:layout_above="@+id/bt_xiayiye"android:layout_alignParentBottom="true"/></RelativeLayout>?
?
?
最后貼出配置文件的源碼:
?
?
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="cn.yhsh.maptest"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><!-- 這個權限用于進行網絡定位 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" ></uses-permission><!-- 這個權限用于訪問GPS定位 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" ></uses-permission><!-- 用于訪問wifi網絡信息,wifi信息會用于進行網絡定位 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission><!-- 獲取運營商信息,用于支持提供運營商信息相關的接口 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" ></uses-permission><!-- 這個權限用于獲取wifi的獲取權限,wifi信息會用來進行網絡定位 --><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" ></uses-permission><!-- 用于讀取手機當前的狀態 --><uses-permission android:name="android.permission.READ_PHONE_STATE" ></uses-permission><!-- 寫入擴展存儲,向擴展卡寫入數據,用于寫入離線定位數據 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" ></uses-permission><!-- 訪問網絡,網絡定位需要上網 --><uses-permission android:name="android.permission.INTERNET" /><!-- SD卡讀取權限,用戶寫入離線定位數據 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" ></uses-permission><!-- 允許應用讀取低級別的系統日志文件 --><uses-permission android:name="android.permission.READ_LOGS" ></uses-permission> <!-- android:theme="@android:style/Theme.NoTitleBar" --><applicationandroid:name="utils.QuanjuContext"android:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@android:style/Theme.NoTitleBar" ><meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="換成自己的appkey即可" /><activityandroid:name="cn.yhsh.maptest.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>?
 上面的可能新手看起來很亂,這個是主要源碼部分,經供參考。
?
點擊下載源碼下載
總結
以上是生活随笔為你收集整理的Android 百度地图之全局搜索周边搜索全国搜索城市路线规划(升级版附源码)的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Debian忘记密码修改
 - 下一篇: ps中怎么建立选区快捷键