ios地图sdk | 百度地图api sdk-凯发k8官方旗舰厅

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
自定义热力图
下载开发文档
热力图简介

热力图是用不同颜色的区块叠加在地图上描述人群分布、密度和变化趋势的一个产品,百度地图sdk将绘制热力图的能力为广大开发者开放,帮助开发者利用自有数据,构建属于自己的热力图,提供丰富的展示效果。

注意:此处的“热力图功能”不同于“百度城市热力图”。百度城市热力图通过简单的接口调用,开发者可展示百度数据的热力图层。而此处的热力图功能,需要开发者传入自己的位置数据(坐标),然后sdk会根据热力图绘制规则,为开发者做本地的热力图渲染绘制。
热力图生成的原理

大量自有坐标数据在地图打点,打点的越多,就会根据打点的密集程度,呈现热力图。

构建属于自己的热力图

利用自有数据,构建属于自己的热力图,提供丰富的展示效果,添加自定义热力图请参考bmkheatmap类。关键代码示例如下:

//添加热力图
-(void)addheatmap {
//创建热力图数据类
bmkheatmap* heatmap =[[bmkheatmap alloc] init];
//读取数据
nsdata*jsondata =[nsdata datawithcontentsoffile:[[nsbundle mainbundle] pathforresource:@"locations"oftype:@"json"]];
nsarray*array =[nsjsonserializationjsonobjectwithdata:jsondata options:0error:nil];
nsmutablearray* datas =[nsmutablearray array];
// 创建60帧数据
for(int i =0; i <60; i){
//创建热力图数据数组
nsmutablearray* data =[nsmutablearray array];
if(jsondata){
for(nsdictionary*dic in array){
//创建bmkheatmapnode
bmkheatmapnode* heapmapnode_test =[[bmkheatmapnode alloc] init];
bmkgradient*graident =[[bmkgradient alloc] initwithcolors:@[[uicolor bluecolor],[uicolor redcolor],[uicolor greencolor]] startpoints:@[@0.08, @0.4, @1.0]];
heatmap.mgradient= graident;
cllocationcoordinate2d coor;
coor.latitude=[dic[@"lat"] doublevalue]0.05* i;
coor.longitude=[dic[@"lng"] doublevalue]0.05* i;
heapmapnode_test.pt= coor;
//随机生成点强度
heapmapnode_test.intensity=arc4random() %900;
//添加bmkheatmapnode到数组
[data addobject:heapmapnode_test];
}
}
[datas addobject:data];
}
//将点数据赋值到热力图数据类
heatmap.mdatas= datas;
heatmap.mmaxhight=100;
bmkanimation*animation =[[bmkanimation alloc] init];
animation.duration=600;
animation.type=cosinecurve;
heatmap.animation= animation;
bmkanimation*frameanimation =[[bmkanimation alloc] init];
frameanimation.duration=3000;
frameanimation.type=inoutsine;
heatmap.frameanimation= frameanimation;
heatmap.delegate= self;
//调用mapview中的方法根据热力图数据添加热力图
[self.mapview addheatmap:heatmap];
}
#pragma mark -bmkheatmapdelegate
-(void)onhandlecurrentheatmapframeanimationindex:(nsinteger)index {
// 当前展示帧索引值
}

json数据样式可根据需求自定义,示例中的json数据样式如下:

[
{"lng":116.895579,"lat":24.306521},
{"lng":113.951068,"lat":22.772504},
{"lng":110.00006,"lat":40.603564},
{"lng":111.846788,"lat":21.897821}
]

自定义数据热力图效果如下:

注意:自有坐标数据在地图打点,打点的越多,就会根据打点的密集程度,呈现热力图。如拥有的数据是某一坐标上有一个数值(如密度值、趋势值),生成热力图时,可以理解为在某一坐标打点“密度值次”、“趋势值次”,地图即可呈现热力图。但密度值、趋势值可能为小数,需要对数据做一下处理,比如整体密度值、趋势值扩大1000倍取整。读取坐标数据时,某个坐标读取“1000倍密度值次”,那么坐标点的密度,就会通过热力呈现出来了。
热力图米单位半径

地图sdk since 6.5.7 新增米单位半径热力图及热力图展示层级限制,更加适合局部场景热力图展示。修改关键代码示例如下:

/// 设置热力图点半径单位是否是米,默认为no,since 6.5.7
heatmap.mradiusismeter=yes;
/// 设置热力图点半径(米),默认为12米,当mradiusismeter为yes时生效,范围[10~50],since 6.5.6
heatmap.mradiusmeter=50;
/// 设置热力图最大权重值,默认为1.0,since 6.5.0
/// 建议根据自身需求设置最大权值
heatmap.mmaxintensity=120;
/// 设置热力图最大显示等级,默认为22,范围[4~22],since 6.5.7
heatmap.mmaxshowlevel=22;
/// 设置热力图最大显示等级,默认为4,范围[4~22],since 6.5.7
heatmap.mminshowlevel=19;

效果如下:

上一篇

点聚合

下一篇

自定义瓦片图

本篇文章对您是否有帮助?

网站地图