多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > php教程 > [置頂] 百度地圖開發(fā)(五)之公交信息檢索 + 路線規(guī)劃

[置頂] 百度地圖開發(fā)(五)之公交信息檢索 + 路線規(guī)劃

來源:程序員人生   發(fā)布時間:2015-03-19 08:18:11 閱讀次數(shù):3098次

轉(zhuǎn)載請注明出處:

    在上1篇blog中介紹過POI檢索的使用,本篇blog主要介紹公交信息檢索線路計劃的內(nèi)容。

公交信息檢索

    實際上,公交信息檢索與POI檢索、在線建議檢索非常相似,也是把你需要檢索的信息發(fā)送給百度地圖服務(wù)器,然后解析得到的結(jié)果。

    1般步驟:

    1. 設(shè)置檢索參數(shù)

    2. 添加檢索結(jié)果監(jiān)聽器

    3. 發(fā)起檢索

    4. 解析返回結(jié)果

    打開程序包com.baidu.mapapi.search.busline    


    在BusLineSearchOption這個類中,我們看到1個參數(shù)是城市,另外一個是公眾線路uid。

1開始,我以為第2個參數(shù)是公交線號,代碼編寫終了去查詢的時候,總是出錯。后來仔細查看了api以后,發(fā)現(xiàn)不是公交線號,而是uid。uid我們在之前poi檢索的時候,曾見到過,它實際上即是1個id,是i1個唯1標識。

所以注意:公交信息檢索設(shè)置查詢參數(shù)時,第2個參數(shù)是uid。

    所以進行公交信息檢索之前,需要先進行POI檢索。使用searchInCity()方法在每個城市內(nèi)查詢公交線路號:

city = cityEt.getText().toString(); busline = buslineEt.getText().toString(); poiSearch.searchInCity((new PoiCitySearchOption()).city(city) .keyword(busline));
    得到poi檢索的結(jié)果時,在PoiResult類中有通過getAllPoi()獲得poi檢索結(jié)果。
@Override public void onGetPoiResult(PoiResult poiResult) { if (poiResult == null || poiResult.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {// 沒有找到檢索結(jié)果 Toast.makeText(BusLineSearchActivity.this, "未找到結(jié)果", Toast.LENGTH_LONG).show(); return; } if (poiResult.error == SearchResult.ERRORNO.NO_ERROR) {// 檢索結(jié)果正常返回 // 得到檢索結(jié)果 } }
    此時如果直接取出PoiInfo中的uid的話,你會發(fā)現(xiàn)很多個。但是,我們都知道,1個公交線號最多有兩個線路(正向和反向)。所以我們需要挑選出是公交線路的uid。

    在PoiInfo類中有個type字段:0:普通點、1:、公交站 2:、 公交線路 3:、地鐵站 4:地鐵線路

if (poi.type == PoiInfo.POITYPE.BUS_LINE || poi.type == PoiInfo.POITYPE.SUBWAY_LINE) { buslineIdList.add(poi.uid); }
    通過判斷type,將正確的uid添加到1個list中。
    得到了uid,就能夠結(jié)合城市參數(shù),進行公交線路檢索了。

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++; } }
/** * 公交信息查詢結(jié)果監(jiān)聽器 */ OnGetBusLineSearchResultListener busLineSearchResultListener = new OnGetBusLineSearchResultListener() { @Override public void onGetBusLineResult(BusLineResult busLineResult) { if (busLineResult.error != SearchResult.ERRORNO.NO_ERROR) { Toast.makeText(BusLineSearchActivity.this, "抱歉,未找到結(jié)果", Toast.LENGTH_SHORT).show(); } else { bdMap.clear(); BusLineOverlay overlay = new MyBuslineOverlay(bdMap);// 用于顯示1條公交詳情結(jié)果的Overlay overlay.setData(busLineResult); overlay.addToMap();// 將overlay添加到地圖上 overlay.zoomToSpan();// 縮放地圖,使所有overlay都在適合的視野范圍內(nèi) bdMap.setOnMarkerClickListener(overlay); // 公交線路名稱 Toast.makeText(BusLineSearchActivity.this, busLineResult.getBusLineName(), Toast.LENGTH_SHORT) .show(); } } };

    BusLineResult用來存儲查詢得到的結(jié)果,它又兩個內(nèi)部類和幾個普通函數(shù):

    我們可以通過這兩個內(nèi)部類,得到自己想要的信息,這里就不在代碼里寫了。

    我們照舊通過使用overlayutil包下的相干類(BusLineOverlay)添加覆蓋物到地圖上。

class MyBuslineOverlay extends BusLineOverlay { public MyBuslineOverlay(BaiduMap arg0) { super(arg0); } /** * 站點點擊事件 */ @Override public boolean onBusStationClick(int arg0) { MarkerOptions options = (MarkerOptions) getOverlayOptions().get(arg0); bdMap.animateMapStatus(MapStatusUpdateFactory.newLatLng(options.getPosition())); return true; } }


線路計劃

    線路計劃分為3種:駕車、換成(公交)、步行。而線路計劃又與之前的各種檢索相似。

 線路計劃先關(guān)類都在此包結(jié)構(gòu)下。


    我將這個包下面的類做了1下標注,這樣就很清楚了,3種線路計劃方式就相當于1個poi檢索,只有參數(shù)設(shè)置的時候需要注意下。


    線路計劃里有策略這1概念。那駕車線路計劃說,就包括4種策略:躲避擁堵、最短距離、較少費用、時間優(yōu)先,這4種策略組成了1個枚舉類型:DrivingRoutePlanOption.DrivingPolicy。


    設(shè)置點的時候,傳入的參數(shù)是PlanNode類型的。該類有兩個靜態(tài)的方法,1個通過設(shè)置城市名和地名,1個通過設(shè)置經(jīng)緯度,都可以返回1個PlanNode對象。

    OK,到此為止,線路計劃已沒有任何難處了,下面只貼出駕車線路計劃的代碼,其余的可以下載demo查看。

DrivingRoutePlanOption drivingOption = new DrivingRoutePlanOption(); drivingOption.policy(DrivingPolicy.values()[drivingSpinner .getSelectedItemPosition()]);// 設(shè)置駕車線路策略 drivingOption.from(PlanNode.withCityNameAndPlaceName("北京", startPlace));// 設(shè)置出發(fā)點 drivingOption.to(PlanNode.withCityNameAndPlaceName("北京", endPlace));// 設(shè)置終點 routePlanSearch.drivingSearch(drivingOption);// 發(fā)起駕車線路計劃

/** * 駕車線路結(jié)果回調(diào) 查詢的結(jié)果可能包括多條駕車線路方案 */ @Override public void onGetDrivingRouteResult( DrivingRouteResult drivingRouteResult) { bdMap.clear(); if (drivingRouteResult == null || drivingRouteResult.error != SearchResult.ERRORNO.NO_ERROR) { Toast.makeText(RoutePlanningActivity.this, "抱歉,未找到結(jié)果", Toast.LENGTH_SHORT).show(); } if (drivingRouteResult.error == SearchResult.ERRORNO.AMBIGUOUS_ROURE_ADDR) { // 起終點或途經(jīng)點地址有岐義,通過以下接口獲得建議查詢信息 // drivingRouteResult.getSuggestAddrInfo() return; } if (drivingRouteResult.error == SearchResult.ERRORNO.NO_ERROR) { DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay( bdMap); drivingRouteOverlay.setData(drivingRouteResult.getRouteLines() .get(drivintResultIndex));// 設(shè)置1條駕車線路方案 bdMap.setOnMarkerClickListener(drivingRouteOverlay); drivingRouteOverlay.addToMap(); drivingRouteOverlay.zoomToSpan(); totalLine = drivingRouteResult.getRouteLines().size(); Toast.makeText(RoutePlanningActivity.this, "共查詢出" + totalLine + "條符合條件的線路", 1000).show(); if (totalLine > 1) { nextLineBtn.setEnabled(true); } // 通過getTaxiInfo()可以得到很多關(guān)于打車的信息 Toast.makeText( RoutePlanningActivity.this, "該線路打車總路程" + drivingRouteResult.getTaxiInfo() .getDistance(), 1000).show(); } } };

下載

    demo下載地址~~~


生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 女人18毛片视频一级毛片容 | 亚欧成人毛片一区二区三区四区 | 国产一区二区在线视频观看 | 亚洲精品中文字幕无乱码 | 性xxxxⅹhd成人| 亚洲成网777777国产精品 | 日本护士xxxxx在线播放 | 一级作爱视频免费观看 | 亚洲jizzjizz妇女 | 日本网站免费 | 性激烈的欧美三级视频中文字幕 | 99黄色片 | 亚洲欧美日韩高清一区二区一 | 免费日本毛片 | 亚洲欧美乱综合图片区小说区 | 成人欧美一区二区三区视频不卡 | 欧美综合在线观看 | 免费视频不卡 | 一区二区三区久久 | 日韩亚洲欧美性感视频影片免费看 | 一区二区三区四区在线 | 亚洲欧美精品一区 | 羞羞视频免费看网站 | 日本特黄一级大片 | 亚洲欧洲久久 | 中文字幕在线永久在线视频2020 | 国产在线乱子伦一区二区 | japanese日本护士18 | 亚洲天堂国产精品 | 久草中文字 | 中文字幕 亚洲 一区二区三区 | 欧美午夜色大片在线观看免费 | 亚洲美日韩 | 一区二区三区国模大胆 | 欧美一区二区三区不卡免费观看 | 午夜视频在线播放 | 欧洲精品一区二区 | 午夜性色福利影院 | jizz欧美大全| 视频一区二区中文字幕 | 色综合一本到久久亚洲91 |