尝鲜云端地图服务 Azure Location Based Service Preview
? ? 就在不久之前,Azure發布了基于位置的服務(LBS, Location Based Service)。這個服務歸屬在Azure IoT服務類別下,猜測目的是便于提供有定位、導航和路徑規劃的IoT解決方案。LBS這個詞你肯定不會陌生,因為你用的很多應用都是用了LBS的服務,從餓了么到陌陌,從小黃車到支付寶紅包…
??? 在Azure里啟用LBS服務很簡單,開啟之后除了提供訂閱的Key,幾乎也沒什么配置的地方。微軟給這個服務提供了開發使用文檔:https://docs.microsoft.com/zh-cn/azure/location-based-services/
??? 可是我更建議結合github上的示例代碼來研究這個服務是如何使用的。說明加上代碼加上相關的插件說明和Azure REST API,幾小時之內你就能寫出自己的調用地圖的應用。從邏輯原理上說,微軟提供了一套javascript/css 插件接口,以及一個支持地圖服務的網站。接下來我們就開始做第一件事。
???? ×××……是的,js和css所在的網站https://atlas.microsoft.com?我這里反正是不能訪問,×××之后才看到地圖…其實這也不是啥大問題,畢竟測試全球版Azure的你肯定有×××的辦法……
??? github上的示例有四個,交互式搜索、靜態搜索、路徑和跟蹤路徑。交互式搜索能夠很快讓你知道這個服務的大概樣子;然后通過靜態搜索,能夠了解到地圖的各種對象例如map、popup、point等等;路徑能夠了解如何調用這個服務來計算從起點到終點的路由;而跟蹤路徑可以看到增加道路限制之后不同的路徑計算結果。
先看InteractiveSearch,把github上的代碼復制下來之后,將<insert-key>替換成在Azure里面添加LBS服務設置里顯示的兩個Key的任何一個,保存為HTML文件,瀏覽器打開就能看到如下界面。代碼里hard conding了中心位置,默認是在洛杉磯,順著10號公路一路開,就到了Santa Monica海灘,滿滿的回憶啊~在搜索框里可以進行搜索。
???? 你會發現有很多的限制,后面我們再說原因。接下來,開始我們的學習之旅。看看第一個示例 Search。當然先把<insert-key>給換了,后面就不重復了。打開代碼學習一下它是怎么工作的。其實流程基本就是構造一個URL請求字串,然后把返回的數據進行處理。默認搜索的是加油站,我把它換成了hotel,提交給LBS的服務網站之后,按照提交的query進行查詢,然后把返回的結果處理后顯示在網頁上。
??? 顯示過程使用了Popup方法,也就是代碼里的atlas.Popup(),可以在站點查詢所有LBS服務使用的方法:https://docs.microsoft.com/zh-cn/javascript/api/location-based-services-javascript/popup?view=azure-iot-typescript-latest
??? 定義的彈出顯示,除了名字“The Westin Bellevue”和地址,還顯示了經緯度。這個酒店是前年參加MVP全球峰會我住的地方,滿滿的回憶+1。我們把經緯度復制備用。
??? 接下來的Route路徑規劃示例,會顯示如何查詢從起點到終點的路徑查詢,并在地圖中顯示出來。一樣,我把默認的加油站的經緯度,改成了我們剛才查詢到的酒店的經緯度。這里會看到,使用了atlas.data的Point函數,這個函數對應了Position,文檔顯示這是一個三維坐標,經緯度是必須的,高度是可選的??蓞⒖?#xff1a;
https://docs.microsoft.com/zh-cn/javascript/api/location-based-services-javascript/point?view=azure-iot-typescript-latest
https://docs.microsoft.com/zh-cn/javascript/api/location-based-services-javascript/position?view=azure-iot-typescript-latest
??? 這也就是說,IoT應用可以直接把GPS讀取的位置信息處理后,傳遞給LBS服務進行地圖展現。
??? 對于返回的數據繪制,使用了atlas.data的Feature,不過沒看到詳細的說明,我試探著把icon的描述從pin-round-blue改成了pin-round-red,于是地圖中起點Microsoft就從藍色變成了紅色。
??? 更復雜一點的例子,就是針對路徑查詢設置一些限制,使得路徑能夠規避一些不能/不適合通行的道路。這個例子是traceRoute。如代碼中高亮部分,對通行條件做了針對卡車的限制,因此查詢的兩條線路會導致不同的線路結果。
??? 找了一下,查詢限制說明可以參考:https://docs.microsoft.com/zh-cn/rest/api/location-based-services/route/getroutedirections?但我沒有發現示例代碼使用的參數。倒是說明站點有顯示:https://docs.microsoft.com/en-us/azure/location-based-services/tutorial-prioritized-routes,最終我在這里找到了說明:https://developer.tomtom.com/online-routing/online-routing-documentation-routing/common-routing-parameters
??? 別忘了,地圖的右下角寫著小小的TomTom~
??? 按照文檔說明,這個示例應該顯示卡車走Evergreen Point Bridge,而汽車走90號公路??墒俏疫\行后是這樣的……
??? 我猜現在西雅圖是半夜,沒啥車,所以卡車汽車都走上面了。那怎么體現按照不同條件限制選擇不同線路呢?有辦法。
truckRouteUrl += “&routeType=shortest”
??? 我讓卡車去掉限制,走最短線路~這下效果出來了~
??????? 目前Azure LBS有挺多的限制,例如,中國的地圖暫時不可用~
那么哪些地方的地圖可以查詢到什么程度呢?可以參考:
????地圖編碼覆蓋區域,能夠查詢城鎮,道路,門牌等
????交通覆蓋區域,能夠查詢路況信息,有事故標注、流量情況。
??? 即使是美國的地圖,Azure LBS的和Bing的,也有差異。
??? Bing的地圖顯示建筑信息更全一點,美國的地圖提供者是HERE,也就是最早的Nokia?
??? 如果你下載過Windows 10里的地圖,你就知道至少日本、朝鮮韓國的地圖是沒有的,而在Bing地圖中,日本的地圖供應商是Zenrin。
??? 而國內的地圖供應商是Navinfo。
??? 有關地圖供應商說明可參考:https://support.microsoft.com/zh-cn/help/17831/about-bing-data-suppliers
轉載于:https://blog.51cto.com/haohu/2068852
總結
以上是生活随笔為你收集整理的尝鲜云端地图服务 Azure Location Based Service Preview的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: box-shadow页面立体效果
- 下一篇: FPGA基础设计(10)Verilog行