一、熱力圖介紹
百度地圖熱力圖是在地圖上通過顏色的漸變來表達不同區域數量/密度的分布,通常用於表達POI(Point of Interest)在特定區域內的分布情況。顏色越深表示分布的密度越大,顏色越淺表示分布的密度越小。在地圖上,這些區域用熱力圖層表示。
對於地圖的交互性,百度地圖熱力圖提供了各種事件觸發與回調,以滿足用戶需要進行更細緻的處理,比如當滑鼠經過或點擊熱力圖時,可以返回所在區域的相關信息。
二、使用方法
使用百度地圖熱力圖需要引入相應的JavaScript文件:
http://api.map.baidu.com/api?v=2.0&ak=[您的AK密鑰]&callback=init
其中「v=2.0」表示引用百度地圖API 指定版本;「ak=[您的AK密鑰]」表示需要您在百度地圖開放平台上註冊獲取並指定;「callback=init」表示需要執行的初始化函數,您可以自定義函數名,也可以保持默認。
接下來就可以像創建普通百度地圖一樣來創建熱力圖層了。
var map = new BMap.Map("myMap"); map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); var heatmapOverlay = new BMapLib.HeatmapOverlay({"radius":20}); map.addOverlay(heatmapOverlay);
上面的代碼創建了一個寬高為800px * 600px,中心點位於(116.404, 39.915)、縮放級別為11的地圖,並添加了一個半徑為20的熱力圖層。
三、自定義樣式
百度地圖熱力圖提供了豐富的自定義樣式選項,可以通過以下代碼設置熱力圖層的樣式:
var heatmapOverlay = new BMapLib.HeatmapOverlay({ "radius":20, "gradient":{.5:"#5cffff",.8:"#5bff6c",1:"#ff5c5c"}, "opacity":1, "max":100 });
其中,「radius」表示半徑大小;「gradient」表示顏色漸變,可自定義多種顏色;「opacity」表示熱力圖層的透明度;「max」表示熱力值的最大顯示值。
四、事件與回調
我們可以對熱力圖層添加各種事件,以滿足用戶對地圖的更精細化處理。
var heatmapOverlay = new BMapLib.HeatmapOverlay({"radius":20}); heatmapOverlay.addEventListener("mouseout", function(){ console.log("取消選擇"); }); heatmapOverlay.addEventListener("mousemove", function(e){ console.log("滑鼠移動到:" + e.point.lng + ", " + e.point.lat); }); heatmapOverlay.addEventListener("click", function(e){ console.log("點擊:" + e.point.lng + ", " + e.point.lat); });
上面的代碼定義了三個事件,分別是滑鼠移開、移動和點擊。當我們在熱力圖層上執行相應操作時,就會觸發相應的事件,以便進行用戶交互與信息處理。
五、使用示例
下面我們提供一個百度地圖熱力圖的完整使用示例:(請將「[您的AK密鑰]」替換為真實的AK密鑰)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>百度地圖熱力圖</title> <script src="http://api.map.baidu.com/api?v=2.0&ak=[您的AK密鑰]&callback=init"></script> <script> function init(){ var map = new BMap.Map("myMap"); map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); var points = [{"lng":116.418261,"lat":39.921984,"count":50},{"lng":116.423332,"lat":39.916532,"count":20},{"lng":116.419787,"lat":39.930658,"count":30},{"lng":116.418455,"lat":39.920921,"count":40},{"lng":116.418843,"lat":39.915516,"count":100},{"lng":116.42546,"lat":39.918503,"count":6},{"lng":116.423289,"lat":39.919989,"count":18},{"lng":116.418162,"lat":39.915051,"count":80},{"lng":116.422039,"lat":39.91782,"count":11},{"lng":116.41387,"lat":39.917253,"count":7},{"lng":116.415424,"lat":39.923176,"count":42},{"lng":116.421597,"lat":39.91948,"count":4},{"lng":116.423895,"lat":39.920787,"count":27},{"lng":116.431907,"lat":39.914987,"count":3},{"lng":116.418392,"lat":39.920431,"count":23},{"lng":116.4192,"lat":39.917655,"count":60}]; var heatmapOverlay = new BMapLib.HeatmapOverlay({ "radius":20, "gradient":{.5:"#5cffff",.8:"#5bff6c",1:"#ff5c5c"}, "opacity":1, "max":100 }); map.addOverlay(heatmapOverlay); heatmapOverlay.setDataSet({data:points,max:100}); heatmapOverlay.addEventListener("mouseout", function(){ console.log("取消選擇"); }); heatmapOverlay.addEventListener("mousemove", function(e){ console.log("滑鼠移動到:" + e.point.lng + ", " + e.point.lat); }); heatmapOverlay.addEventListener("click", function(e){ console.log("點擊:" + e.point.lng + ", " + e.point.lat); }); } </script> </head> <body> <div id="myMap" style="width:800px;height:600px;"></div> </body> </html>
這個示例使用了一個封裝好的數據集「points」(包含每個點的經度、緯度及權重值),以展示如何在百度地圖上創建熱力圖,並添加相應的事件。您可以將示例代碼直接複製到您的編輯器中,修改AK密鑰並保存為.html文件即可運行。
原創文章,作者:YWEWO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/334762.html