引用百度地图API完成热力图 您所在的位置:网站首页 百度地图热力图是怎么生成的 引用百度地图API完成热力图

引用百度地图API完成热力图

2024-06-15 05:07| 来源: 网络整理| 查看: 265

近期肺炎疫情信息闹的火热,就该情况完成来沪人员分布热力图以及标注确诊患者足迹。就开发研究中遇到的问题以及解决方案做一下记录,如下所示:

一、效果示意图

简述完成效果:百度地图引入,增加热力图,添加比例尺,添加缩放平移控件,增加标注,窗口提示等,具体实现和关键代码描述如下。

二、引入百度地图,增加热力图显示

2.1官网申请账号,申请密钥

需要调用百度地图需要先登录官网百度平台官网注册,点击控制台

在点击->我的应用->创建应用

创建应用时如果只想在浏览器端和本地测试则选择应用类型为浏览器端,Referer白名单填*即可

提交完成即可在我的应用处看到你新增的应用,可复制密钥后续代码可使用,在下图您的密钥替换成相应密钥即可。

2.2增加热力图显示

可在百度地图提供的开发平台查看所需功能案例以及官方代码,便于查阅,方便好用百度地图API示例,示意图如下:

只需将所需功能对应的代码复制进自己项目中,并将密钥替换即可实现官网所示案例。

三、热力图改造所遇问题以及解决

3.1增加比例尺和缩放控件

关键代码如下所示,结合图一可看结果,皆有详细备注不再赘述:

//设置地图显示比例尺 var top_left_control = new BMap.ScaleControl({anchor: BMAP_ANCHOR_TOP_LEFT});// 左上角,添加比例尺 var top_left_navigation = new BMap.NavigationControl();  //左上角,添加默认缩放平移控件 var top_right_navigation = new BMap.NavigationControl({anchor: BMAP_ANCHOR_TOP_RIGHT, type: BMAP_NAVIGATION_CONTROL_SMALL}); //右上角,仅包含平移和缩放按钮 /*缩放控件type有四种类型: BMAP_NAVIGATION_CONTROL_SMALL:仅包含平移和缩放按钮;BMAP_NAVIGATION_CONTROL_PAN:仅包含平移按钮;BMAP_NAVIGATION_CONTROL_ZOOM:仅包含缩放按钮*/ //添加控件和比例尺 function add_control(){ map.addControl(top_left_control); map.addControl(top_left_navigation); map.addControl(top_right_navigation); } add_control() //移除控件和比例尺 function delete_control(){ map.removeControl(top_left_control); map.removeControl(top_left_navigation); map.removeControl(top_right_navigation); }

3.2地图默认尺寸以及控制尺寸缩放范围

我默认地图显示五公里,即缩放尺寸12,百度地图可缩放范围为3-18,关键代码如下所示:

map.centerAndZoom(point, 12); map.setMinZoom(10); map.setMaxZoom(15);

3.3增加不同标注以及弹框

关键代码如下:

我使用引用图片的方式增加的标注,redPlace和grayPlace代表两种不同标注,简单放几条示例数据,主要包括经纬度,地点和时间,经纬度为确定位置,后两个信息为弹框显示可自行按需增减。实现效果如图一所示,

问题&解决

同一个地点出现不同时间的多条数据,标识出现覆盖,只显示一条数据的情况?更改前代码如下

for (var i = 0; i < redPlace.length; i ++) { var dandian = new BMap.Point(redPlace[i].lng,redPlace[i].lat); var outContent = redPlace[i].count +"" +"与"+redPlace[i].confirm_time+"确诊病例相关"; // var titleContent="最新确诊患者经过地点"; var photo ="../img/redplaceTwo.png" addMarker(dandian,outContent,photo); } for (var i = 0; i < grayPlace.length; i ++) { var dandian = new BMap.Point(grayPlace[i].lng,grayPlace[i].lat); var outContent = grayPlace[i].confirm_time + "在此位置" + grayPlace[i].count+ "发现确诊患者"; var photo ="../img/grayplaceTwo.png" addMarker(dandian,outContent,photo); }

解决:因需求14天前的数据显示为灰色,近期坐标数据为红色,所以首先需要判断redPlace中是否有重复的地址,有则提示增加相应时间,再判断灰色数据中是否有重复地点,有则增加相应时间且字体颜色变灰,代码中已经是更改好的版本,详情见如下代码所示。

var redPlace =[ {"lng":"121.417292","lat":"31.11383582","count":"春申景城","confirm_time":"2020.02.10"}, {"lng":"121.3791296","lat":"31.11698623","count":"莘沥路232号","confirm_time":"2020.02.10"}, {"lng":"121.326997","lat":"31.200547","count":"虹桥火车站","confirm_time":"2020.02.10"}, {"lng":"121.034558","lat":"30.90266994","count":"枫岸华庭","confirm_time":"2020.02.10"}, {"lng":"121.039004","lat":"30.90282982","count":"枫泾汽车站“枫梅线”站点","confirm_time":"2020.02.10"}, {"lng":"121.328657","lat":"31.276939","count":"龙湖天璞小区","confirm_time":"2020.02.22"}]; var grayPlace =[ {"lng":"121.467027","lat":"31.21994684","count":"陕西南路地铁站","confirm_time":"2020.02.06"}, {"lng":"121.4254809","lat":"31.20176557","count":"虹桥街道虹桥路1024弄","confirm_time":"2020.02.06"}, {"lng":"121.4610525","lat":"31.19391016","count":"枫林路街道东安二村","confirm_time":"2020.02.06"}, {"lng":"121.460441","lat":"31.19937","count":"安吉斯铭汽车销售服务有限公司","confirm_time":"2020.02.06"}, {"lng":"121.4838841","lat":"31.33612082","count":"四季绿城(北区)","confirm_time":"2020.02.09"}]; for (var i = 0; i < redPlace.length; i ++) { var outContent = redPlace[i].count +"" +"与"+redPlace[i].confirm_time+"确诊病例相关"+""; for(var j=0;j


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有