服務項目

需求溝通

高德地圖api接口

  當前想法是爬取目標區域(作者所在小縣城)的所有poi數據,存到數據庫中作為原始數據,然后供其它系統調用,因為之前爬取過百度地圖的poi數據,所以這次工作就駕輕就熟了。

  1、首先注冊一個高德地圖的開發者賬號,申請一個綁定Web服務的key,然后把剛注冊的開發者賬號認證一下: 申請賬號、key就不贅述了,去高德地圖開發平臺很簡單就能完成了,將賬號認證是為了提高每日訪問高德地圖api接口的次數限制和并發請求。

  2、根據上方api地址里面的介紹,總共分為4中搜索: 關鍵字搜索:通過用POI的關鍵字進行條件搜索,例如:肯德基、朝陽公園等;同時支持設置POI類型搜索,例如:銀行 周邊搜索:在用戶傳入經緯度坐標點附近,在設定的范圍內,按照關鍵字或POI類型搜索; 多邊形搜索:在多邊形區域內進行搜索 ID查詢:通過POI ID,查詢某個POI詳情,建議可同輸入提示API配合使用

  我的目標是某個區域的所有poi,所以選擇的第三種:多邊形搜索

  3、多邊形搜索最重要的參數就是polygon-》經緯度坐標對,我在百度地圖坐標拾取系統拾取了我的目標區域的經緯度坐標對,如下圖:

  3步準備工作到這里就差不多結束了,在正式開始碼代碼之前先做個測試吧,用瀏覽器直接訪問接口看看返回的數據(當然,高德的api接口有返回數據說明)

  如上圖,這里比較重要的一個屬性是count,根據api的介紹count是搜索方案數目(最大值為1000),所以說每次請求都會返回當前所搜所包含的poi個數,而大于1000的poi是沒有辦法獲取到的。那么我如果想查詢某個區域的全部數據,可以將這個區域再劃分成更小的區域(顯然是個遞歸操作)的集合,然后把這幾個可以查到所有poi的區域的所有poi數據結合起來就是我最終需要的數據。可能口述不明朗,可以見下方草圖:

  好,可以開始擼代碼了:

  因為,整個調用API的過程都離不開經緯度,所以首先定義一個經緯度描述的類 `

  然后需要一個調用api,獲取返回數據的方法,這個方法參數就是矩形塊,當然還需要一個頁數,即當前方法獲取的是某個矩形區域的第X頁的數據(每頁上線25個poi,默認20個poi)

  當然,上方已經說過,如果矩形塊返回數據count=1000,就說明當前矩形塊需要分割,我的想法比較簡單,將矩形塊按照上方草圖,在水平中心和垂直分心分割,1個矩形塊就分割成4個小矩形塊了,方法如下:

  目前,可以獲取到矩形區域經緯度對的集合了,也有獲取api數據的方法了,然后就是遍歷頁數獲取數據,自定義操作數據。 當某次分頁請求返回的poi個數小于每頁最大個數的時候就認為當前區域poi已經完全請求到了。

  到此,基本方法都介紹過了,全部代碼如下:

  更新(2018-09-20):

  1、時間問題,當前50ms請求一次api接口,跑完小縣城的數據(幾萬條)大概需要十分鐘左右吧,把整個市區主要數據跑完斷斷續續的用了一天吧,最后跑了近27W數據

  2、應用問題,原本的想法就是做個簡單的小程序,把跑來的數據加以利用,做個電話本類似的應用,具體可以掃下方小程序碼體驗


       溫馨提示:大連仟源科技有限公司匯聚眾多網絡精英與行業頂尖設計師、程序員,以WEB互動應用、移動互聯網應用、商業軟件為戰略方向。以成熟的技術、創新的理念、不斷開拓進取的精神服務于各行業客戶。

上一篇:localstorage 下一篇:clipboard
文章標簽:
文章評論:

專業的游戲開發/系統開發、品牌設計/網站建設,選仟源!

選擇專業的企業服務公司,服務更靠譜!

立即點擊咨詢>
客服圖標
客服圖標
118旺角心水论坛