地图位置开发解析(一)
介紹
本文以騰訊位置服務為例,介紹一下在開發地圖位置服務的一些思路和想法。
?
騰訊位置服務,提供了地點搜索,地址解析,逆地址解析,路線規劃,距離計算,行政區劃,坐標轉換,IP定位的相關接口供大家使用。
?
使用之前需要注冊自己的key,在這里,大家點擊下面鏈接,就可以直接注冊免費使用了。
?
邀請碼: GUZRFLG
邀請鏈接: https://lbs.qq.com?lbs_invite=GUZRFLG
?
如果是個人開發測試學習,免費的調用次數已經足夠我們使用了,如果需要商業使用,可以付費購買。
?
本篇文章只著重介紹路線規劃服務,其他的模塊,在后面一系列文章里會分別介紹。
?
路線規劃
開發路線規劃,提前需要準備的東西一定要有路網數據,如果想計算的準確,路網數據要盡可能的全和精確,不同等級的道路和相關道路屬性都要有。
?
以騰訊為例,騰訊地圖API給我們提供了駕車,步行,騎行,公交四種路線規劃方式,具體可以在騰訊位置服務,WebService API下了解。
當道路數據準備好之后,所謂的路線規劃,簡單來說就是輸入一個起始點,輸入一個終止點,在地圖上計算合理的路線,那么如何計算出合理的路線?
?
如果熟悉地圖相關開發的,應該知道,計算兩點直接的距離,需要的是倆個經緯度,而我們一般用地圖的時候,起始點和終止點,輸入的都是地址,所以在進行路線計算的時候,首先要用的一個就是地址解析。
?
地址解析不了解的同學,我在這里簡單說一下,地址解析主要就是將輸入的地址,轉換成地圖上對應的經緯度,反過來逆地址解析就是,將輸入的經緯度轉換成當前位置對應的地址。
?
對于地址解析和逆地址解析,聽起來容易,但做起來其實是需要大量的地址數據作為支撐的,大體說一下需要用到的東西,地址數據庫,行政區劃區分,字典分詞,權重值(很多地址并不是我們想象的那么規范,所以解析的時候需要有取舍),POI數據等等,其中在分詞的時候,要對行政區劃和具體的門址地址庫進行區分,解析。這里先簡單了解了解,后續文章詳細介紹這一塊的時候,會重點說這些東西。
?
我們回到路線規劃上去,在得到起始點和終止點的經緯度的時候,下一步要做的就是算路了,這個時候不同的分類,對應了不同的算路算法,像駕車,步行,騎行等,所以這就需要我們的道路數據全而精了,如果你只有一級道路,二級道路和高速公路這些,那去計算步行,豈不是沒什么意義。
?
我們以駕車為例,計算兩點之間最優的路線,主要就是從一個點出發,開始找路,首先你可以匹配離你最近的道路,然后出發,在每遇到一個岔路口的時候,都分別去找路,目的就是一直找到可以到達終點的線路。
?
在這里有的人會說,如果兩地較遠,那么路會非常非常多,要一條一條去找嗎,還有就是算路的時間問題,如何可以更快的算出想要的路線?
?
首先倆點之間的路確實非常多,包括近路、遠路、走不通的路都有,而我們在開始的時候是無法確定的,所以在最開始肯定要每一條路都去找,而在找的過程中,可以對已經找到的路進行過濾,這里的因素可以有紅綠燈的個數,收費站的個數,道路行駛花費的時間是否已經相對于其他道路超出一個閾值,通過設置各種因素條件,很多道路在找到一定程度上就會舍棄,節省了時間,也不需要每一條道路都去找一遍。
?
另外,找路不是從起止點開始不停的找,一直找到終點,我們可以從起始點和終點同時開始找路,兩邊同時進行,直到匯合的時候,算路完成。
?
所以這樣做的話,就會發現在兩點之間找路,基本就是以點為中心,離點越近的路會找的越多,越往外發散,匹配的道路越少,速度也會更快。
?
由于公司規定原因,我不能把自己開發的相關源碼拿出來分享,后續我看是否可以提取一些公共通用的算法,分享給大家。
?
如果你是開發底層位置服務進行路線規劃的,可以簡單參考參考,如果只是需要直接在業務上調用使用相關接口的,那可以直接使用騰訊提供的web接口,只要申請了自己的key,就可以免費調用了(附申請地址:https://lbs.qq.com?lbs_invite=GUZRFLG)。
?
最后大家若還想了解更多關于位置服務開發,后面我會把我開發過的地址解析,逆地址解析,距離計算,行政區劃,坐標轉換,IP定位等這些相關東西分享給大家。
總結
以上是生活随笔為你收集整理的地图位置开发解析(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单的博客页面客制化 v2
- 下一篇: 教你撩妹,每天给小姐姐发一封暖心邮件