最近在做一個物流后台系統,需要用地圖來把訂單地址展示出來,需要在地圖上批量框選坐標進行排單,需要看到配送員的實時位置等等功能。
在高德地圖、騰訊地圖、百度地圖三者間,我選了百度地圖,沒有原因,個人偏好,因此我也不知道高德地圖和騰訊地圖好不好用。反正到目前為止,我所想到的功能,百度都有對應的接口提供,點個贊。
一、關於百度地圖的JavaScript API
在網站上通過js直接來調用百度的api,使用方法很簡單,可以參考官網:http://developer.baidu.com/map/index.php?title=jspopular。
開發初期給我幫助比較大的是直接拷貝demo示例提供的代碼:http://developer.baidu.com/map/jsdemo.htm#a1_2(我用360瀏覽器顯示不正常,建議使用chrome)
當然,demo展示的功能不是全部的功能,大概有80%吧,想靈活的使用各種方法,有事沒事得把js API的類參考文檔看一下,大概有什么類,有什么方法。參考地址:http://developer.baidu.com/map/reference/index.php
這里推薦個有個比較隱蔽的js文檔網址:http://developer.baidu.com/map/library.htm。這里有一些功能的補充,都是一些比較高級的功能,在開發的中后期都是參考這個網址來進行開發。
二、關於百度地圖的Web API
web端的接口就相對少一些,我使用PHPExcel來導入訂單信息,然后使用Web API對地址信息進行轉換,最后把地址的相關信息保存到數據庫當中。例如:導入地址:廣州市天河北嘉逸國際酒店五樓力美健。通過Web API的Geocoding API可以獲取到經度:113.315296,緯度:23.138987,所在區:越秀區,所在路:梅花路。
獲取到地址的詳細信息后,就在排單頁面上以坐標的形式標記出來,這里就和JavaScript API結合使用了。
三、功能示例展示
我就通過參考上述的各種文檔,東借西湊做出一些小功能,現在展示給大家看看。
1.以熱力圖的方式直觀展示訂單的密集程度以及區域訂單數量。
左上角的工具條是繪制覆蓋物的工具條,在地圖上划一個區域,然后結合百度提供的幾何換算的API,可以把繪制區內的訂單搜集起來(我所做的是將區域內的訂單移出地圖,並放在“購物車”內),效果如下圖:
2.實時位置展示
這是一個在不停上下跳動的坐標點,旁邊是label信息(當然可以做得美一些)。這里可以參考百度地圖提供的鷹眼服務。參考網址:http://yingyan.baidu.com/index.html
四、注意事項
1.樣式問題。如果是使用BootStrap做的前端,那么css文件:bootstrap.css或bootstrap.min.css中的label將會和百度地圖的地圖樣式有沖突,導致百度地圖的label樣式失效。
解決方法如下圖所示:移除bootstrap.css文件中label的max-width樣式。
2.定位問題。一般來說,通過PC端瀏覽器對個人目前位置定位是不准確的,強烈建議使用移動端來測試定位的代碼。
3.地址解析問題。偶爾會遇到地址解析不了的問題,那很可能就是你沒有填寫所要解析地址所在的城市。如果業務需求不同的城市進行地址的解析,那么可以通過session、查詢數據庫等方式來實時獲取用戶所在的城市。這個參數雖然不顯眼,但是千萬不能忽略,不然會出現各種意想不到的精彩事情。如下圖所示:
五、小結
總的來說,百度地圖還是挺好用的,而且開發難度不算大,再點個贊。
大家如果也在進行地圖方面的開發,可以互相交流經驗,同時也歡迎大家多多指教!