精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

百度地圖API之如何制作公交導航

開發(fā) 前端
公交導航功能是告訴使用者從A到B的公交出行方案,而不是某條具體的公交線路信息,這一點需要廣大開發(fā)者注意。公交導航功能通過類TransitRoute來實現,這里需要說說為啥不是BusRoute,而是TransitRoute。

前面我們介紹過駕車導航了,今天來說說公交導航。

什么是公交導航

公交導航功能是告訴使用者從A到B的公交出行方案,而不是某條具體的公交線路信息,這一點需要廣大開發(fā)者注意。

公交導航功能通過類TransitRoute來實現,這里需要說說為啥不是BusRoute,而是TransitRoute。百度提供的是公共交通導航,公共交通不僅僅涉及bus,可能還會有地鐵、渡輪甚至以后的飛機火車,所以這里使用的是public transit中的transit進行描述。

一個簡單的例子

我們還是從一個簡單的例子開始:

  1. var transit = new BMap.TransitRoute('北京', {  
  2.     renderOptions: {  
  3.         map: map,  
  4.         panel: 'panel'  
  5.     }  
  6. });  
  7. transit.search('頤和園', '西單'); 

代碼通過renderOptions設置渲染的地圖實例和側欄面板容器的id,其中map是已經實例化好的地圖,panel為已經準備好的div元素的id。我們會看到如下結果:

 

地圖上顯示了一個方案,在面板中列出了所有方案的描述,點擊不同的方案地圖會予以展示。除了使用字符串類型以外,還可以提供坐標進行查詢,這樣可以得到更精確的結果。比如從“麥當勞”到“肯德基”這樣的路線查詢就不會得到結果,因為API不知道是從哪個麥當勞到哪個肯德基。下面的示例使用了坐標進行搜索。

  1. transit2.search(new BMap.Point(116.315157,39.987946),   
  2.                              new BMap.Point(116.371499,39.880394)); 

下面是使用坐標作為參數進行查詢得到的結果:

注意,由于提供的是坐標,所以起點和終點沒有具體的地點描述。

自定義覆蓋物展示

如果你不滿意API提供的默認線路的顏色和標注的樣式,你也可以選擇通過通過數據接口自行創(chuàng)建。注意,自己創(chuàng)建覆蓋物時,點擊列表中的方案將不會更新地圖區(qū)域,因為此時地圖區(qū)域的元素都是由開發(fā)者自行創(chuàng)建的。在使用數據接口之前,先通過一個結構圖來了解一個完整的公交方案的各個組成部分,以方便理解:

 

 

一個不需要換乘的公交方案是由:起點、起點到上車站的步行線路、上車站到下車站的公交線路以及下車站到終點的步行線路構成。當然有可能起點和上車站是重合的,或者終點和下車站是重合的,此時步行線路長度就為0(起點或終點本身就為公交站的時候)。如果有換乘,那么每次換乘中的下車站到上車站也有步行線路(如上圖的第二個方案所示)。

所以不論公交方案具體是什么樣,在數據上的表示都是一致的:

◆ 直達方案:2條步行線路 + 1條公交線路

◆ 換乘一次方案:3條步行線路 + 2條公交線路

◆ 換乘兩次方案:4條步行線路 + 3條公交線路

以此類推。

API中通過TransitRouteResult來描述公交導航結果,通過TransitRoutePlan來描述一條公交方案。那么怎么獲取公交導航結果和具體的方案的信息呢?請看下面的示例:

  1. var transit = new BMap.TransitRoute('北京', {  
  2.     onSearchComplete: function(result) {  
  3.         if (transit.getStatus() == BMAP_STATUS_SUCCESS) {  
  4.             // 從結果對象中獲取起點和終點信息  
  5.             var start = result.getStart();  
  6.             var end = result.getEnd();  
  7.             addStart(start.point, start.title);  
  8.             addEnd(end.point, end.title);  
  9.             // 直接獲取***個方案  
  10.             var plan = result.getPlan(0);  
  11.             // 遍歷所有步行線路  
  12.             for (var i = 0; i < plan.getNumRoutes(); i++) {  
  13.                 if (plan.getRoute(i).getDistance(false) > 0) {  
  14.                     // 判斷只有大于0的步行線路才會繪制  
  15.                     addWalkRoute(plan.getRoute(i).getPath());  
  16.                 }  
  17.             }  
  18.             // 遍歷所有公交線路  
  19.             var allLinePath = [];  
  20.             for (i = 0; i < plan.getNumLines(); i++) {  
  21.                 allLinePathallLinePath = allLinePath.concat(plan.getLine(i).getPath());  
  22.                 addLine(plan.getLine(i).getPath());  
  23.             }  
  24.             // ***根據公交線路的點設置地圖視野  
  25.             map.setViewport(allLinePath);  
  26.         }  
  27.     }  
  28. });  
  29.  
  30. transit.search('清華大學', '北京交通大學');  
  31.  
  32. // 添加起點覆蓋物  
  33. function addStart(point, title){  
  34.     map.addOverlay(new BMap.Marker(point, {  
  35.         title: title,  
  36.         icon: new BMap.Icon('http://images.cnblogs.com/cnblogs_com/jz1108/329471/o_blue.png', new BMap.Size(38, 41), {  
  37.             anchor: new BMap.Size(4, 36)  
  38.         })}));  
  39. }  
  40.  
  41. // 添加終點覆蓋物  
  42. function addEnd(point, title){  
  43.     map.addOverlay(new BMap.Marker(point, {  
  44.         title: title,  
  45.         icon: new BMap.Icon('http://images.cnblogs.com/cnblogs_com/jz1108/329471/o_red.png', new BMap.Size(38, 41), {  
  46.             anchor: new BMap.Size(4, 36)  
  47.         })}));  
  48. }  
  49.  
  50. // 添加路線  
  51. function addWalkRoute(path){  
  52.     map.addOverlay(new BMap.Polyline(path, {  
  53.         strokeColor: 'black',  
  54.         strokeOpacity: 0.7,  
  55.         strokeWeight: 4,  
  56.         strokeStyle: 'dashed',  
  57.         enableClicking: false  
  58.     }));  
  59. }  
  60.  
  61. function addLine(path){  
  62.     map.addOverlay(new BMap.Polyline(path, {  
  63.         strokeColor: 'blue',  
  64.         strokeOpacity: 0.6,  
  65.         strokeWeight: 5,  
  66.         enableClicking: false  
  67.     }));  

在上面的代碼中,通過TransitRouteOptions的onSearchComplete屬性設置了回調函數,一旦檢索完成這個回調函數就會被調用。在回調函數開始我們先判斷檢索是否成功,如果成功表示至少有一條公交方案返回,這里我們先通過結果對象獲取起點和終點,接著直接獲取***條方案,遍歷方案中所有步行線路和公交線路并繪制在地圖上,***我們根據公交線路的點來設置一個合適的地圖視野。

你會在瀏覽器中得到如下效果:

 

 

在獲取結果對象時,除了通過回調函數參數獲取以外,還可以通過TransitRoute的getResults方法獲得,需要注意的是,由于搜索過程是異步的,以下代碼的寫法將不會得到結果:

  1. transit.search('西單', '頤和園');  
  2. var res = transit.getResults();  // undefined 

因為search方法調用結束后搜索結果并沒有立即返回。開發(fā)者可以在回調函數中調用此方法立即獲得結果,也可以等回調函數執(zhí)行完若干時間后再想獲取結果數據時調用。

自定義方案描述

通過TransitRoutePlan的getDescription可以獲得完整的方案描述,但是如果開發(fā)者想自行定義描述的形式則可通過數據接口進行。例如:

  1. var transit = new BMap.TransitRoute('北京', {  
  2.     onSearchComplete: function(result) {  
  3.         if (transit.getStatus() == BMAP_STATUS_SUCCESS) {  
  4.             // 從結果對象中獲取起點和終點信息  
  5.             var start = result.getStart().title;  
  6.             var end = result.getEnd().title;  
  7.               
  8.             // 直接獲取***個方案  
  9.             var plan = result.getPlan(0);  
  10.             // 獲取步行線路與公交線路個數總和,用于遍歷  
  11.             var total = plan.getNumRoutes() + plan.getNumLines();  
  12.               
  13.             var description = ['從' + start];  
  14.             var addEndTitle = true;  
  15.             for (var i = 0; i < total; i++) {  
  16.                 if (i % 2 == 0) {  
  17.                     // i為偶數  
  18.                     // 處理***個步行描述邏輯  
  19.                     if (i / 2 == 0) {  
  20.                         if (plan.getRoute(i / 2).getDistance(false) == 0) {  
  21.                             description = ['從'];  
  22.                         }  
  23.                     }  
  24.                     // 處理***一個步行描述邏輯  
  25.                     if (i / 2 == plan.getNumRoutes() - 1) {  
  26.                         if (plan.getRoute(i / 2).getDistance(false) == 0) {  
  27.                             addEndTitle = false;  
  28.                         }  
  29.                     }  
  30.                     if (plan.getRoute(i / 2).getDistance(false) > 0) {  
  31.                         description.push('步行約' + plan.getRoute(i / 2).getDistance(true) + '至');  
  32.                     }  
  33.                 } else {  
  34.                     // i為奇數  
  35.                     var line = plan.getLine((i - 1) / 2);  
  36.                     description.push(line.getGetOnStop().title + ', ');  
  37.                     description.push('乘坐' + line.title + ', ');  
  38.                     description.push('經過' + line.getNumViaStops() + '站');  
  39.                     description.push('在' + line.getGetOffStop().title + '站下車,');  
  40.                 }  
  41.             }  
  42.             if (addEndTitle) {  
  43.                 description.push(end + '。');  
  44.             }  
  45.             // 替換可能出現的末尾位置的逗號  
  46.             var descriptiondescriptionStr = description.join('').replace(/\uff0c$/, '。');  
  47.         }  
  48.     }  
  49. });  
  50.  
  51. transit.search('清華大學', '北京交通大學'); 

變量descriptionStr的內容為:“從清華大學步行約830米至五道口, 乘坐地鐵13號線(東直門-西直門), 經過3站在西直門站下車,步行約310米至城鐵西直門站, 乘坐運通105(上地環(huán)島東-中苑賓館), 經過2站在北京交通大學站下車。”

回調函數詳解

前面的幾個例子我們使用了onSearchComplete回調函數,在API中還提供了如下幾個回調函數,它們的含義和觸發(fā)時機如下:

◆ onMarkersSet:如果設置了渲染的地圖,則API自動添加標注后會觸發(fā)此函數。

◆ onPolylinesSet:如果設置了渲染的地圖,則API自動添加線路覆蓋物后會觸發(fā)此函數。

◆ onInfoHtmlSet:如果設置了渲染地圖,當用戶點擊標注彈出信息窗口時會觸發(fā)此函數。

◆ onResultsHtmlSet:如果設置了渲染側欄,則API填充完HTML后會觸發(fā)此函數。

原文:http://www.cnblogs.com/jz1108/archive/2011/10/21/2220574.html

【編輯推薦】

  1. 百度地圖API如何批量轉換為百度經緯度
  2. 百度地圖API如何給自定義覆蓋物添加事件
  3. 詳解百度地圖API之自定義地圖類型
  4. 詳解百度地圖API之地圖操作
  5. 百度地圖API之如何制作駕車導航
  6. 詳解百度地圖API之地圖標注
責任編輯:陳貽新 來源: jz1108的博客
相關推薦

2011-09-16 14:39:02

百度地圖API

2011-09-26 10:05:19

百度地圖API

2011-10-21 09:28:25

百度地圖API

2011-10-09 11:07:40

百度地圖API

2011-09-29 11:00:54

百度地圖API

2011-10-21 10:16:25

百度地圖API

2011-09-16 10:37:42

地圖API

2012-02-01 09:33:36

百度地圖API

2013-04-08 14:59:54

Android學習筆記百度地圖Overlay

2011-10-21 09:11:41

百度地圖API

2021-06-15 14:33:00

高德百度騰訊

2022-03-27 10:04:23

Angular8項目vue

2011-12-29 16:18:14

API

2014-10-29 17:53:00

高德地圖

2013-04-08 14:46:42

Android學習筆記百度地圖

2012-02-03 14:01:15

地圖

2011-05-25 14:36:17

2014-07-25 17:12:39

數據庫WOT2014MongoDB

2023-12-20 17:38:44

APIhttp鴻蒙
點贊
收藏

51CTO技術棧公眾號

91成人在线观看喷潮教学| 欧美制服第一页| а 天堂 在线| 波多野结衣在线观看| 久久久久久久久久久久久夜| 国产精品久久久久久一区二区| 成人做爰视频网站| 国产污片在线观看| 日韩专区av| 91视频com| 国产日韩在线亚洲字幕中文| 精品处破女学生| 国产情侣av在线| 神马电影久久| 91精品麻豆日日躁夜夜躁| aa视频在线播放| 成人在线视频成人| 国产福利不卡视频| 日本一区二区三区在线播放| 国产精品 欧美激情| 最新国产一区| 日韩欧美电影一二三| 成人精品小视频| 麻豆av在线播放| 中文字幕av一区二区三区免费看| 国产精品免费一区二区三区观看| а中文在线天堂| 亚洲电影成人| 久久精品视频网站| 天堂久久精品忘忧草| www.国产精品一区| 91精品一区二区三区久久久久久 | 一级特黄aaa大片| 在线亚洲欧美| 欧美人与性动交| 国产精品久久久免费看| 亚洲性视频大全| 337p日本欧洲亚洲大胆精品| 亚洲黄色av片| 国产原创一区| 色成人在线视频| 国产精品一区二区免费在线观看| 91极品在线| 国产精品高潮呻吟久久| 日本一区网站| 你懂的视频在线观看| eeuss影院一区二区三区| 亚洲自拍欧美另类| 国产精品嫩草影院桃色| 蜜臀va亚洲va欧美va天堂 | 久久综合成人网| 亚洲精品电影| 久久精品国产亚洲7777| 国产无遮挡在线观看| 精品久久久久久久久久久下田| 日韩极品精品视频免费观看| 荫蒂被男人添免费视频| 大香伊人久久精品一区二区| 精品福利在线导航| 国产性猛交96| 精品日产乱码久久久久久仙踪林| 精品国产露脸精彩对白 | 久久免费偷拍视频| 蜜桃在线一区二区三区精品| 亚洲欧美日韩成人在线| 91亚洲精华国产精华精华液| 久久99精品国产99久久| 天天插天天干天天操| 99精品久久只有精品| 欧美日本韩国国产| 男女污污视频在线观看| 久久久久国产精品免费免费搜索| 欧美一级爽aaaaa大片| 波多野结衣在线影院| 国产精品福利在线播放| 最近看过的日韩成人| av在线播放国产| 亚洲国产精品久久艾草纯爱| 黄色免费视频大全| 欧美成人黑人| 欧美日韩国产美女| 1314成人网| 国产精品超碰| 亚洲视频在线播放| 超碰人人人人人人人| 亚洲精品a级片| 国产+人+亚洲| 日本中文字幕在线观看视频| 久久国产精品72免费观看| 91在线免费网站| 日本激情一区二区| 久久久久久久久久久久久夜| 中文字幕成人一区| 678在线观看视频| 欧洲一区在线电影| 久久精品久久99| 欧美影院天天5g天天爽| 在线播放亚洲激情| 91porn在线视频| 久久久999| 成人在线观看视频网站| 色偷偷在线观看| 国产精品久久午夜| 人妻夜夜添夜夜无码av| 日日夜夜精品| 日韩高清不卡av| 在线免费看av网站| 亚洲欧美日韩国产| 91入口在线观看| 国产九九在线| 午夜影院在线观看欧美| 日本肉体xxxx裸体xxx免费| youjizzjizz亚洲| 在线观看亚洲视频| av大片免费在线观看| 久久电影网电视剧免费观看| 加勒比在线一区二区三区观看| 欧美激情黑人| 一本一本大道香蕉久在线精品 | 成人黄页在线观看| 无遮挡亚洲一区| 看黄在线观看| 欧美一级二级三级蜜桃| 四虎成人免费影院| 日韩一级免费| 91精品久久香蕉国产线看观看 | 久久深夜福利免费观看| 欧美日韩一级黄色片| 国产 日韩 欧美大片| 一本色道久久99精品综合| www成人免费观看| 日韩视频一区二区三区| 一本在线免费视频| 视频一区欧美精品| 蜜桃久久精品乱码一区二区 | 亚洲午夜视频在线| 亚洲国产午夜精品| av亚洲在线观看| 欧美亚洲国产成人精品| 天天干天天草天天射| 亚洲综合自拍偷拍| 性鲍视频在线观看| 午夜激情久久| 国产精品一区专区欧美日韩| 国产鲁鲁视频在线观看免费| 色天使色偷偷av一区二区| 日韩网站在线播放| 亚洲美女啪啪| 久久精品日韩精品| 中文av在线全新| 亚洲精品视频中文字幕| 青青草免费观看视频| 97久久久精品综合88久久| 2018日日夜夜| 久久99精品国产自在现线| 国产+成+人+亚洲欧洲| 熟妇人妻中文av无码| 午夜视频在线观看一区二区三区| 成年女人免费视频| 日韩视频在线一区二区三区| 精品综合在线| 国产不卡网站| 夜夜嗨av一区二区三区四区| 懂色av蜜臀av粉嫩av喷吹| 国产欧美精品一区二区三区四区| 国产精品人人爽人人爽| 视频在线不卡免费观看| 91久久久久久久久久久久久| 91在线中文| 精品国产麻豆免费人成网站| 成人午夜视频精品一区| 久久久777精品电影网影网 | av免费在线一区| 中日韩美女免费视频网址在线观看| 中文字幕一区二区三区免费看| 国产精品激情偷乱一区二区∴| 污污的视频免费| 午夜日本精品| 精品一区二区久久久久久久网站| 欧洲av不卡| 久久精品成人欧美大片古装| av免费观看网址| 亚洲超碰精品一区二区| 这里只有久久精品| 激情伊人五月天久久综合| 国产精品免费看久久久无码| 少妇精品导航| 国产在线视频91| 日本欧美电影在线观看| 日韩精品福利在线| 亚洲一级片免费看| 一区二区成人在线| 美女100%无挡| 国产在线播放一区三区四| 无码熟妇人妻av在线电影| 伊人久久大香线蕉av不卡| 成人福利视频在线观看| av手机在线观看| 最近2019中文免费高清视频观看www99 | 成人做爽爽免费视频| 国产在线美女| 中文字幕日韩专区| 成人久久久精品国产乱码一区二区 | 在线观看欧美一区| 欧美aaaaa级| 国产日韩精品在线播放| 美女91在线看| 久久综合久久美利坚合众国| 青青草手机在线| 91精品国产福利在线观看| 欧美精品亚洲精品日韩精品| 中文字幕亚洲电影| 亚洲成人av免费在线观看| 精品一区二区三区久久| 精品视频一区二区在线| 亚洲最新av| 神马影院一区二区| 婷婷综合电影| 99国产超薄丝袜足j在线观看 | 亚洲综合精品伊人久久| 全亚洲第一av番号网站| 久久久久久久久久av| 快射av在线播放一区| 亚洲欧美日韩一区二区在线| 成人免费视频国产| 欧美精品一卡两卡| 无码人妻av免费一区二区三区 | 不卡av在线免费观看| 狠狠操狠狠干视频| 日韩激情视频在线观看| 免费无码不卡视频在线观看| 国产精品v日韩精品v欧美精品网站 | 欧美一区二区三区艳史| 亚洲综合伊人久久大杳蕉| 中文字幕一区二区精品| 男人天堂综合| 亚洲久久久久久久久久久| 天天色棕合合合合合合合| 欧美一区二区视频在线观看| 中文字幕网址在线| 在线视频欧美精品| 国产精品久久久久久人| 疯狂蹂躏欧美一区二区精品| 国产午夜小视频| 一区二区三区丝袜| 欧美黄色免费观看| 亚洲男人电影天堂| 成人免费精品动漫网站| 国产精品毛片久久久久久| 一级黄色毛毛片| 亚洲国产精品成人综合| 天堂资源在线视频| 国产精品女上位| 91大神福利视频| 国产精品成人免费在线| 日韩精品久久久久久久的张开腿让| 亚洲国产精品精华液2区45| 天天干天天操天天拍| 国产精品久久久久久久岛一牛影视| www.涩涩爱| 亚洲三级在线观看| 色婷婷在线视频观看| 亚洲麻豆国产自偷在线| 久久免费播放视频| 亚洲成人资源在线| 黄色在线视频网址| 在线观看日韩高清av| 伊人亚洲综合网| 欧美一区二区三区在线电影| 亚洲精品久久久久avwww潮水| 精品99999| 涩涩视频在线观看免费| 国产亚洲欧美日韩精品| 免费黄色网址在线观看| 欧美高清激情视频| 第84页国产精品| 91精品国产综合久久香蕉| 国产精品久久久久久av公交车| 成人国产一区二区| 亚州综合一区| 亚洲国产精品123| 亚洲v在线看| 成人免费观看在线| 久久国产日韩| 在线免费黄色网| 丁香另类激情小说| 美女久久久久久久久久| 国产精品久久久久影院色老大| 亚洲色图综合区| 欧美日韩国内自拍| 亚洲综合免费视频| 亚洲电影av在线| 77导航福利在线| 欧美黄网免费在线观看| 欧美日韩精品免费观看视完整| 91久久精品国产91久久性色| 久久亚洲道色| 伊人久久大香线蕉午夜av| 亚洲二区视频| 久久久久久久久久一区| 99久久综合精品| 51精品免费网站| 欧美日韩亚洲网| 国产www免费观看| 亚洲图片欧美午夜| 国产区美女在线| 国产欧美亚洲视频| 色吊丝一区二区| 永久免费看av| 日韩中文字幕1| 污污污www精品国产网站| 中文字幕中文字幕在线一区 | cao在线视频| 国产中文字幕日韩| 亚洲精品一级二级三级| 国产精品igao激情视频| 日韩成人免费电影| 亚洲啪av永久无码精品放毛片 | 欧美18av| 国产亚洲二区| 欧美在线看片| www.com黄色片| 久久精品视频网| 久草视频在线观| 日韩精品专区在线影院重磅| 成人精品一区二区三区免费| 97久久精品人人澡人人爽缅北| 一区二区三区| 亚洲日本精品国产第一区| 午夜一区二区三区不卡视频| 少妇丰满尤物大尺度写真| 国产精品美女久久久久久久网站| 日韩精品一区二区亚洲av| 亚洲国产成人av在线| 日韩特级毛片| 亚洲影影院av| 91不卡在线观看| 日本中文字幕二区| 中文一区二区在线观看| 黄色av网站免费| 国产亚洲激情在线| 日韩国产激情| 日韩久久久久久久| 久久婷婷激情| 91视频在线网站| 日韩欧美亚洲国产一区| 亚洲人妻一区二区三区| 国产69精品久久久久久| 日韩电影不卡一区| 浮妇高潮喷白浆视频| 91视频在线看| 九九热在线免费观看| 亚洲欧美国产日韩中文字幕| 白浆在线视频| 蜜桃91精品入口| 久久亚洲国产精品一区二区| 国产精久久一区二区三区| 日韩欧美中文在线| 国模精品一区二区| 国产精品久久久久久久久久ktv| 精品国产一区二区三区| 亚洲精品视频导航| 国产精品电影一区二区| 国产精品探花视频| 欧美精品情趣视频| а√中文在线天堂精品| 免费无码av片在线观看| 欧美国产一区视频在线观看| 国产精品久久久久久久久久久久久久久久| 久久精品久久久久电影| 日韩成人在线观看视频| 国产不卡一区二区视频| 久久久国产精品麻豆| 91成人一区二区三区| 色综合久综合久久综合久鬼88| 精品综合久久88少妇激情| 国产日产欧美视频| 国产精品国产三级国产aⅴ入口| 99久久国产免费| 97免费在线视频| 成人av动漫在线观看| 真实乱偷全部视频| 欧美日韩在线观看视频| 免费高清完整在线观看| 国产激情一区二区三区在线观看 | 手机av在线网| 亚洲国产成人tv| 粉嫩av一区| 成人9ⅰ免费影视网站| 日日夜夜一区二区| 青青草手机在线观看| 亚洲欧美制服另类日韩| 国产一区二区久久久久| 波多野结衣家庭教师在线播放| 国产日韩欧美高清| 东京干手机福利视频| 国产精品久久国产精品99gif| 欧美午夜不卡影院在线观看完整版免费 | 久久亚洲国产精品尤物| 国产精品裸体瑜伽视频|