日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
詳解百度地圖API之駕車導(dǎo)航

本文將向大家介紹如何使用百度地圖API提供的駕車導(dǎo)航服務(wù)進(jìn)行開發(fā)。

一個(gè)簡單的示例

駕車導(dǎo)航服務(wù)根據(jù)傳入的起點(diǎn)和終點(diǎn)信息給出從起點(diǎn)到終點(diǎn)的駕車路線,我們先從一個(gè)最簡單的示例看起:

 
 
 
 
  1.   varmap = newBMap.Map('container');  
  2.   map.centerAndZoom(newBMap.Point(116.404, 39.915), 11);  
  3.   vardriving = newBMap.DrivingRoute(map, {  
  4.   renderOptions: {  
  5.   map: map  
  6.   }  
  7.   });  
  8.   driving.search('圓明園', '西單'); 

上面代碼很簡單,先初始化地圖(地圖容器的html代碼省略),接著實(shí)例化一個(gè)DrivingRoute類,并配置好參數(shù)(參數(shù)具體含義后續(xù)再說)。最后調(diào)用該實(shí)例的search方法進(jìn)行駕車方案查詢。我們會在瀏覽器看到如下效果:

DrivingRoute的構(gòu)造函數(shù)的第一個(gè)參數(shù)制定檢索的范圍,這里我們傳遞的是map實(shí)例,也就是說駕車導(dǎo)航的位置會根據(jù)當(dāng)前地圖中心點(diǎn)所在的城市進(jìn)行檢索。當(dāng)然你也可以傳遞一個(gè)城市名稱的字符串:

 
 
 
 
  1.   vardriving = newBMap.DrivingRoute("北京", {  
  2.   renderOptions: {  
  3.   map: map  
  4.   }  
  5.   }); 

DrivingRoute的構(gòu)造函數(shù)第二個(gè)參數(shù)是可選的配置,類型為DrivingRouteOptions。這里我們只使用了renderOptions屬性,這個(gè)屬性值的類型為DrivingRenderOptions類,它是用來控制檢索結(jié)果的呈現(xiàn)的,比如是否將結(jié)果線路呈現(xiàn)在地圖上,是否將詳細(xì)方案描述呈現(xiàn)在頁面的某個(gè)位置等等。這里我們使用了map屬性,即讓檢索結(jié)果自動展現(xiàn)在地圖上,這樣我們就會看到地圖上有起點(diǎn)、終點(diǎn)以及它們之間的線路了。

呈現(xiàn)設(shè)置

除了設(shè)置展現(xiàn)的地圖以外,呈現(xiàn)設(shè)置中還有很多其他功能,最常用的就是將詳細(xì)方案描述顯示在頁面上:

 
 
 
 
  1.    
  2.    
  3.    
  4.    
  5.   駕車導(dǎo)航 
  6.    
  7.  
  8.    
  9.   
 
  •   
  •  
  •    
  •    
  •    
  • 這里我們增加一個(gè)div,id為panel,接著在renderOptions中增加panel屬性,把div的id傳遞進(jìn)去。我們會看到如下效果:

    API會將詳細(xì)的駕車方案描述填充到id為panel的div容器中。此時(shí)點(diǎn)擊panel中的具體方案會在圖區(qū)產(chǎn)生交互效果。

    另外,呈現(xiàn)設(shè)置的enableDragging如果設(shè)置為true的畫,則用戶可以在地圖上拖拽起點(diǎn)、終點(diǎn)改變駕車方案,也可以任意拖拽修改途徑點(diǎn):

     
     
     
     
    1.   vardriving = newBMap.DrivingRoute(map, {  
    2.   renderOptions: {  
    3.   map: map,  
    4.   panel: 'panel',  
    5.   enableDragging: true 
    6.   }  
    7.   }); 

    highlightMode屬性可以控制點(diǎn)擊panel中的方案描述時(shí)展示點(diǎn)位置還是展示一段路線,它支持如下兩個(gè)值:

    BMAP_HIGHLIGHT_STEP:展現(xiàn)關(guān)鍵點(diǎn)

    BMAP_HIGHLIGHT_ROUTE:展現(xiàn)路段

    默認(rèn)為展現(xiàn)關(guān)鍵點(diǎn),如下圖:

    點(diǎn)擊描述的第三項(xiàng),顯示一個(gè)關(guān)鍵點(diǎn)信息(根據(jù)描述,這個(gè)點(diǎn)就是在中關(guān)村一橋左轉(zhuǎn)的位置點(diǎn)),也可以顯示路線:

    這時(shí),再選中第三步的時(shí)候,地圖展現(xiàn)的是一段線路(即“沿中關(guān)村北大街行駛1.6公里”這段路)。

    駕車策略配置

    在DrivingRouteOptions還有一個(gè)控制策略的屬性drivingPolicy,它的屬性值可以為以下幾種:

    BMAP_DRIVING_POLICY_LEAST_TIME:最少時(shí)間,默認(rèn)

    BMAP_DRIVING_POLICY_LEAST_DISTANCE:最短距離

    BMAP_DRIVING_POLICY_AVOID_HIGHWAYS:避開高速

    通過配置策略可獲得不同的駕車方案。

    回調(diào)函數(shù)

    在DrivingRouteOptions里面還有很多回調(diào)函數(shù)屬性,比如:onSearchComplete、onMarkersSet、onInfoHtmlSet、onPolylinesSet和onResultsHtmlSet。在DrivingRoute類上也有對應(yīng)的設(shè)置回調(diào)的方法:setSearchCompleteCallback、setMarkersSetCallback等等。實(shí)際上不論通過配置參數(shù)傳遞還是通過接口設(shè)置回調(diào),其作用都是一樣的。這些回調(diào)到底有什么用處呢?

    通過回調(diào)函數(shù),開發(fā)者可獲得更多的數(shù)據(jù)資源,可以利用這些數(shù)據(jù)資源更好、更靈活的進(jìn)行二次開發(fā)。下面這個(gè)示例就是利用onSearchComplete獲取數(shù)據(jù)自行添加覆蓋物和描述信息:

     
     
     
     
    1.    
    2.    
    3.    
    4.    
    5.   駕車導(dǎo)航 
    6.    
    7.  
    8.    
    9.   
     
  •   
  •  
  •    
  •    
  •    
  • 在上面的代碼中,我們初始化DrivingRoute實(shí)例時(shí)沒有設(shè)置renderOptions,也就是說駕車導(dǎo)航的結(jié)果不會自動添加到地圖上,描述信息也不會展現(xiàn)在頁面中,我們通過onSearchComplete獲取數(shù)據(jù)自行添加。onSearchComplete回調(diào)函數(shù)的參數(shù)為一個(gè)DrivingRouteResult對象,通過它可以獲取數(shù)據(jù)信息。在回調(diào)函數(shù)中我們首先判斷一下檢索是否成功,如果成功則添加覆蓋物和描述信息。在添加覆蓋物完成后,我們調(diào)用了Map的setViewport方法來設(shè)置視野,以便讓結(jié)果完整展示在地圖當(dāng)中。在獲取方案的時(shí)候我們調(diào)用getPlan方法并給定索引0,這表示獲取第一條駕車方案(實(shí)際上目前僅有一條駕車方案,但是以后可能會同時(shí)給出多條方案)。每個(gè)方案通過RoutePlan描述,方案中會包含若干Route對象,它表示兩點(diǎn)間的線路(在只有一個(gè)目的地的情況下,Route對象數(shù)量總為1),Route對象又包含若干Step,通過getStep方法可獲得,Step對象描述了每一個(gè)關(guān)鍵點(diǎn)的信息。

    以上代碼在瀏覽器中的效果如下:

    通過接口,你還可以進(jìn)一步豐富這個(gè)功能,比如增加一些點(diǎn)擊交互。

    需要注意的問題

    搜索沒有結(jié)果

    如果檢索關(guān)鍵字過于模糊,比如從“麥當(dāng)勞”到“肯德基”,這樣API不知道從哪個(gè)麥當(dāng)勞到哪個(gè)肯德基,所以此時(shí)將無法獲取導(dǎo)航線路。為了讓導(dǎo)航返回更準(zhǔn)確的結(jié)果,建議使用坐標(biāo)發(fā)起檢索

    發(fā)起新檢索后地圖沒有清除上一次結(jié)果

    在一般情況下,你只需要一個(gè)DrivingRoute實(shí)例做檢索,同一個(gè)實(shí)例在檢索的時(shí)候會自動清除上一次檢索的結(jié)果(包括地圖覆蓋物和描述)。但是如果每次檢索都new一個(gè)新的DrivingRoute實(shí)例,那么每個(gè)實(shí)例的檢索結(jié)果都會出現(xiàn)在地圖上,無法自動清除。


    文章名稱:詳解百度地圖API之駕車導(dǎo)航
    轉(zhuǎn)載源于:http://m.5511xx.com/article/cojgejp.html