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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

百度地图 - 绘制驾车路线图

發布時間:2023/12/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 百度地图 - 绘制驾车路线图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介

在地圖的開發中,最常出現的需求就是駕車線路規劃。沒開發過的人都會認為比較復雜,當把文檔看了一遍之后你就會發現百度api比我們想象中還要強大。下面就開始介紹如何通過百度api輕松的實現這個功能。

創建地圖

  • 通過<script>標簽引入百度地圖地址,這里的ak是你在地圖服務中心注冊的。不了解的可以點 這里
<!DOCTYPE html> <html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta http-equiv="content-type" content="text/html; charset=utf-8" /><title>地圖</title><style type="text/css">html,body {height: 100%;width: 100%;}.bmap {height: 100%;width: 100%;}</style><script src="https://api.map.baidu.com/api?type=webgl&v=1.0&ak=?"></script></head><body><div id="bmap" class="bmap"></div><script>var map = new BMapGL.Map('bmap') // 創建Map實例// 初始化地圖,設置中心點坐標和地圖級別map.centerAndZoom(new BMapGL.Point(121.480509, 31.23592), 10)// 啟用 鼠標滾輪事件map.enableScrollWheelZoom()</script></body> </html>
  • 這樣一張簡單的地圖就創建好了

繪制路線

  • 在繪制路線之前,我們需要知道途徑點地理坐標。有兩種方式,一種是使用 拾取坐標系統 手動獲取我們需要的城市坐標,另一種是使用Geocoder()地址解析服務,自動獲取城市坐標。
// 手動獲取點var pot1 = new BMapGL.Point(106.55276, 29.567551) // 重慶var pot2 = new BMapGL.Point(112.94432, 28.236163) // 長沙var pot3 = new BMapGL.Point(120.211486, 30.255827) // 杭州var pot4 = new BMapGL.Point(121.481115, 31.235682) // 上海
  • 到這就可以使用DrivingRoute (用于獲取駕車路線規劃方案)。簡單介紹下要使用的函數:
  • search() 檢索路線。傳入兩個點,路線開始點,路線結束點。自動生成繪兩點之間的線路點。
  • setSearchCompleteCallback() 檢索結束后的回調函數。檢索完成后,獲取DrivingRoute的線路點數組,使用Polyline覆蓋物繪制路線。
  • 每一次,檢索路線完成后都會調用setSearchCompleteCallback()的回調,這樣我們就可以對不同的線路,設置不同的樣式。
  • // 創建駕車實例var driv = new BMapGL.DrivingRoute(map)// 路線規劃driv.search(pot1, pot2)driv.search(pot2, pot3)driv.search(pot3, pot4)driv.setSearchCompleteCallback(function () {// 通過駕車實例,獲得一系列點的數組var pts = driv.getResults().getPlan(0).getRoute(0).getPath() var polyline = new BMapGL.Polyline(pts)map.addOverlay(polyline)})
    • 繪制線路就完成了,是不是很簡單。

    添加起點、終點、途經點

    • 簡單理解就是在對應的位置繪制標記,標記其實就是覆蓋物。
    • 通過BMapGL.Icon()可以自定義圖片來設置標注點。因為我并未去找圖片,這里直接使用Marker()原本的樣式。
    • 開發中需要對途徑點添加說明,同樣的可以使用Label()覆蓋物來添加文本。為了樣式更加好看,通過修改Label()的屬性,來可以實現各種樣式。
    • 也可以自定義canvas覆蓋物,實現動畫效果(后面會講解如何實現自定義覆蓋物)。
    // 給每個點創建Markervar m1 = new BMapGL.Marker(pot1)var m2 = new BMapGL.Marker(pot2)var m3 = new BMapGL.Marker(pot3)var m4 = new BMapGL.Marker(pot4)map.addOverlay(m1)map.addOverlay(m2)map.addOverlay(m3)map.addOverlay(m4)// 自定義文本標注樣式var style = {borderRadius: '5px',borderColor: '#ccc',padding: '5px',fontSize: '16px',height: '30px',lineHeight: '30px',fontFamily: '微軟雅黑'}// 添加說明var lab1 = new BMapGL.Label('起點', { position: pot1 })style.backgroundColor = '#00FFFF'lab1.setStyle(style)var lab2 = new BMapGL.Label('途徑點', { position: pot2 })style.backgroundColor = '#F5F5DC'lab2.setStyle(style)var lab3 = new BMapGL.Label('途徑點', { position: pot3 })style.backgroundColor = '#F5F5DC'lab3.setStyle(style)var lab4 = new BMapGL.Label('終點', { position: pot4 })style.backgroundColor = '#DC143C'lab4.setStyle(style)map.addOverlay(lab1)map.addOverlay(lab2)map.addOverlay(lab3)map.addOverlay(lab4)
    • 線路繪制后視野還是在原始位置,這里就需要使用setViewport,根據提供的地理區域或坐標設置地圖視野,調整后的視野會保證包含提供的地理區域或坐標。
    • 簡單理解就是只要有點對象數組傳進去,系統就會幫你修改視野。
    • 為了更好的體驗這里加了延時,當線繪制好了在修改視野。
    setTimeout(function () {// 調整到最佳視野map.setViewport([pot1, pot2, pot3, pot4]) }, 1000)
    • 最后效果

    總結

    以上是生活随笔為你收集整理的百度地图 - 绘制驾车路线图的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。