日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

android百度地图开发之自动定位所在位置与固定位置进行驾车,步行,公交路线搜索...

發(fā)布時(shí)間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android百度地图开发之自动定位所在位置与固定位置进行驾车,步行,公交路线搜索... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? 最近跟著百度地圖API學(xué)地圖開(kāi)發(fā),先是學(xué)了路徑搜索,對(duì)于已知坐標(biāo)的兩點(diǎn)進(jìn)行駕車(chē)、公交、步行三種路徑的搜索(公交路徑運(yùn)行沒(méi)效果,待學(xué)習(xí)中),后來(lái)又 學(xué)了定位功能,能夠獲取到自己所在位置的經(jīng)緯度,但當(dāng)將兩者合起來(lái)先自動(dòng)獲取自己所在位置的經(jīng)緯度然后與固定地點(diǎn)進(jìn)行路徑搜索時(shí)卻弄不出來(lái)了,因?yàn)閯傞_(kāi)始 寫(xiě)的兩者在兩個(gè)類(lèi)中總是取不到經(jīng)緯度值,后來(lái)將兩者寫(xiě)到同一個(gè)類(lèi)中去了,終于取到經(jīng)緯度值了,也運(yùn)行出來(lái)了。需要 在?BDLocationListener的onReceiveLocation里獲取到經(jīng)緯度值,因?yàn)橐呀?jīng)能直接拿經(jīng)緯度值了,所以就可以在里面進(jìn)行路 徑搜索了。蘿莉啰嗦說(shuō)了一些估計(jì)只有我自己能看懂。。。。

總結(jié)一下自己實(shí)現(xiàn)的過(guò)程(只說(shuō)主要的):

1.初始化變量

2.在setContentView的前面初始化BMapManager.

3.得到MapController,確定一個(gè)點(diǎn)將mapview的中心設(shè)在那,(此步不可少),若缺少mapview會(huì)顯示到默認(rèn)的地址(貌似是北京那塊地)影響后面起始位置路徑的搜索。

4.生成LoctionClient,使用LocationClientOption對(duì)其進(jìn)行簡(jiǎn)單的設(shè)置。調(diào)用locationClient.start();
locationClient.requestLocation();進(jìn)行定位獲取位置,使用回調(diào)給LocatiopnClient注冊(cè)監(jiān)聽(tīng)器,在回調(diào)方 法onReceiveLocation獲得經(jīng)緯度,使用MKPlanNode設(shè)置起始位置點(diǎn)(已經(jīng)獲取到的經(jīng)緯度)與終點(diǎn),就可以初始化 MKSearch,復(fù)寫(xiě)其參數(shù)監(jiān)聽(tīng)器中的回調(diào)方法onGetWalkingRouteResult、onGetTransitRouteResult、 onGetDrivingRouteResult,最后mkSearch.walkingSearch(null, satrt, null, end);
//mkSearch.drivingSearch(null, satrt, null, end);?
//mkSearch.transitSearch("上海", satrt, end);(運(yùn)行不出,待學(xué)習(xí))
就可以進(jìn)行路線搜索了。

代碼如下

?

package com.example.lockposi;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.MKGeneralListener;
import com.baidu.mapapi.map.MKEvent;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.RouteOverlay;
import com.baidu.mapapi.search.MKAddrInfo;
import com.baidu.mapapi.search.MKBusLineResult;
import com.baidu.mapapi.search.MKDrivingRouteResult;
import com.baidu.mapapi.search.MKPlanNode;
import com.baidu.mapapi.search.MKPoiInfo;
import com.baidu.mapapi.search.MKPoiResult;
import com.baidu.mapapi.search.MKSearch;
import com.baidu.mapapi.search.MKSearchListener;
import com.baidu.mapapi.search.MKSuggestionResult;
import com.baidu.mapapi.search.MKTransitRouteResult;
import com.baidu.mapapi.search.MKWalkingRouteResult;
import com.baidu.platform.comapi.basestruct.GeoPoint;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

?TextView textView;
LocationClient locationClient;
double latitude,longitude;
private MapView mapview;
BMapManager bMapManager;
static final String API_KEY="07418AEC69BAAB7104C6230A6120C580DFFAEEBB";

?@Override
protected void onCreate(Bundle savedInstanceState) {
? super.onCreate(savedInstanceState);
? bMapManager=new BMapManager(getApplicationContext());
? bMapManager.init(API_KEY,new MKGeneralListener() {

?? @Override
?? public void onGetPermissionState(int arg0) {
??? // TODO Auto-generated method stub
??? if(arg0==MKEvent.ERROR_PERMISSION_DENIED){
???? Toast.makeText(getApplicationContext(), "請(qǐng)輸入正確的key",1000).show();

??? }
?? }

?? @Override
?? public void onGetNetworkState(int arg0) {
??? // TODO Auto-generated method stub
??? if (arg0==MKEvent.ERROR_NETWORK_CONNECT) {
???? Toast.makeText(getApplicationContext(), "您的網(wǎng)絡(luò)出錯(cuò)了",1000).show();
??? }
?? }
? });
? setContentView(R.layout.activity_main);
???? mapview = (MapView) this.findViewById(R.id.bmapView);?
???????? mapview.setBuiltInZoomControls(true); ?

???????? MapController mMapController = mapview.getController(); ?

???????? GeoPoint geoPoint = new GeoPoint((int) (31.243319 * 1E6),?
???????????????? (int) (121.509075 * 1E6));?
???????? mMapController.setCenter(geoPoint);?
???????? mMapController.setZoom(12); ?

? textView=(TextView) findViewById(R.id.textView1);
? locationClient=new LocationClient(getApplicationContext());
? LocationClientOption locationClientOption=new LocationClientOption();
? locationClientOption.setOpenGps(true);
? locationClientOption.setCoorType("bd09ll");
? locationClientOption.setPriority(LocationClientOption.NetWorkFirst);
? locationClientOption.setScanSpan(5000);
? locationClient.setLocOption(locationClientOption);
? locationClient.start();
? locationClient.requestLocation();
? Toast.makeText(getApplicationContext(), String.valueOf(latitude),1000).show();

? locationClient.registerLocationListener(new BDLocationListener() {

?? @Override
?? public void onReceivePoi(BDLocation arg0) {
??? // TODO Auto-generated method stub
??? if (arg0==null) {
???? return;
??? }
??? latitude=arg0.getLatitude();
??? longitude=arg0.getLongitude();
??? StringBuilder sBuilder=new StringBuilder();
?????? sBuilder.append("latitude:"+String.valueOf(arg0.getLatitude())).append("longitude:"+String.valueOf(arg0.getLongitude()));
?????? textView.setText(sBuilder.toString());
?? }

?? @Override
?? public void onReceiveLocation(BDLocation arg0) {
??? // TODO Auto-generated method stub
??? if (arg0==null) {
???? return;
??? }
??? latitude=arg0.getLatitude();
??? longitude=arg0.getLongitude();
??? StringBuilder sBuilder=new StringBuilder();
?????? sBuilder.append("latitude:"+arg0.getLatitude()).append("longitude:"+arg0.getLongitude());
?????? textView.setText(sBuilder.toString());
?????? MKPlanNode satrt=new MKPlanNode();
??? satrt.pt=new GeoPoint((int) (31.205889 * 1E6),?
????????????????? (int) (121.637942 * 1E6));
??? MKPlanNode end=new MKPlanNode();
??? end.pt=new GeoPoint((int) (31.243319 * 1E6), (int) (121.509075 * 1E6));
??? final MKSearch mkSearch=new MKSearch();
??? mkSearch.init(bMapManager, new MKSearchListener() {

???? private int intidx;

???? @Override
???? public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
????? // TODO Auto-generated method stub
????? if (arg0==null) {
?????? return;
????? }
????? RouteOverlay routeOverlay=new RouteOverlay(MainActivity.this, mapview);
????? routeOverlay.setData(arg0.getPlan(0).getRoute(0));
????? mapview.getOverlays().add(routeOverlay);
????? mapview.refresh();
???? }

???? @Override
???? public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
????? // TODO Auto-generated method stub
????? if (arg0==null) {
?????? return;
????? }
????? RouteOverlay routeOverlay=new RouteOverlay(MainActivity.this, mapview);
????? routeOverlay.setData(arg0.getPlan(0).getRoute(0));
????? mapview.getOverlays().add(routeOverlay);
????? mapview.refresh();

???? }

???? @Override
???? public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
????? // TODO Auto-generated method stub

???? }

???? @Override
???? public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
????? // TODO Auto-generated method stub
??????? if (arg2 != 0 || arg0 == null) {?
?????????????????? Toast.makeText(MainActivity.this, "抱歉,未找到結(jié)果", Toast.LENGTH_LONG).show();?
?????????????????? return;?
?????????? }?
?????????? // 找到公交路線poi node??
?????????? MKPoiInfo curPoi = null;?
?????????? int totalPoiNum? = arg0.getNumPois();?
?????????? for(intidx = 0; intidx<totalPoiNum; intidx++ ) {?
?????????????????? curPoi = arg0.getPoi(intidx);??
?????????????????? if ( 2 == curPoi.ePoiType ) {?
?????????????????????????? break;??
?????????????????? }?
?????????? }?
?????????? mkSearch.busLineSearch("上海", curPoi.uid);?
???? }

???? @Override
???? public void onGetPoiDetailSearchResult(int arg0, int arg1) {
????? // TODO Auto-generated method stub

???? }

???? @Override
???? public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
????? // TODO Auto-generated method stub
????? if (arg0==null) {
?????? return;
????? }
????? RouteOverlay routeOverlay=new RouteOverlay(MainActivity.this, mapview);
????? routeOverlay.setData(arg0.getPlan(0).getRoute(0));
????? mapview.getOverlays().add(routeOverlay);
????? mapview.refresh();
???? }

???? @Override
???? public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
????? // TODO Auto-generated method stub
????? if (arg1 != 0 || arg0 == null) {?
?????????????????? Toast.makeText(MainActivity.this, "抱歉,未找到結(jié)果", Toast.LENGTH_LONG).show();?
?????????????????? return;?
?????????? }?
?????????? RouteOverlay routeOverlay = new RouteOverlay(MainActivity.this, mapview);??? // 此處僅展示一個(gè)方案作為示例?
?????????? routeOverlay.setData(arg0.getBusRoute());?
?????????? mapview.getOverlays().clear();?
?????????? mapview.getOverlays().add(routeOverlay);?
?????????? mapview.refresh();?
?????????? mapview.getController().animateTo(arg0.getBusRoute().getStart());?
???? }

???? @Override
???? public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
????? // TODO Auto-generated method stub

???? }
??? });

??? mkSearch.walkingSearch(null, satrt, null, end);
??? //mkSearch.drivingSearch(null, satrt, null, end);
??? //mkSearch.transitSearch("上海", satrt, end);

?? }

? });

?

?}

?

}

轉(zhuǎn)載于:https://www.cnblogs.com/xiaochao1234/p/3732611.html

總結(jié)

以上是生活随笔為你收集整理的android百度地图开发之自动定位所在位置与固定位置进行驾车,步行,公交路线搜索...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。