浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
(以“{{iossdk-sidebar}} <div class="bluetitle"><div class="services-title-text">热力图简介</div></div> 热力图是用不同颜色的区块叠加在地图上描述...”为内容创建页面)
 
第5行: 第5行:
 
<span style="color:#FF0000;">注意:此处的“热力图功能”不同于“百度城市热力图”。百度城市热力图通过简单的接口调用,开发者可展示百度数据的热力图层。而此处的热力图功能,需要开发者传入自己的位置数据(坐标),然后SDK会根据热力图绘制规则,为开发者做本地的热力图渲染绘制。</span>
 
<span style="color:#FF0000;">注意:此处的“热力图功能”不同于“百度城市热力图”。百度城市热力图通过简单的接口调用,开发者可展示百度数据的热力图层。而此处的热力图功能,需要开发者传入自己的位置数据(坐标),然后SDK会根据热力图绘制规则,为开发者做本地的热力图渲染绘制。</span>
 
<div class="bluetitle"><div class="services-title-text">热力图生成的原理</div></div>
 
<div class="bluetitle"><div class="services-title-text">热力图生成的原理</div></div>
 
 
大量自有坐标数据在地图打点,打点的越多,就会根据打点的密集程度,呈现热力图。
 
大量自有坐标数据在地图打点,打点的越多,就会根据打点的密集程度,呈现热力图。
 
 
<div class="bluetitle"><div class="services-title-text">构建属于自己的热力图</div></div>
 
<div class="bluetitle"><div class="services-title-text">构建属于自己的热力图</div></div>
 
 
利用自有数据,构建属于自己的热力图,提供丰富的展示效果,添加自定义热力图请参考BMKHeatMap类。关键代码示例如下:
 
利用自有数据,构建属于自己的热力图,提供丰富的展示效果,添加自定义热力图请参考BMKHeatMap类。关键代码示例如下:
 
+
<div class="code_template"><div class="code_control"><div class="code_btn opt">Objective-C</div><div class="code_btn">Swift</div></div><div class="code_container"><pre class="code_item active prettyprint codestyle">//添加热力图
<pre class="prettyprint codestyle">//添加热力图
+
 
-(void)addHeatMap{
 
-(void)addHeatMap{
 
     //创建热力图数据类
 
     //创建热力图数据类
第39行: 第35行:
 
     //调用mapView中的方法根据热力图数据添加热力图
 
     //调用mapView中的方法根据热力图数据添加热力图
 
     [_mapView addHeatMap:heatMap];
 
     [_mapView addHeatMap:heatMap];
 +
}</pre>
 +
<pre class="code_item prettyprint codestyle">heatMap = BMKHeatMap.init()
 +
     
 +
let data: Data? = try! Data.init(contentsOf: URL.init(fileURLWithPath: Bundle.main.path(forResource: "locations", ofType: "json")!))
 +
 +
if (data&nbsp;!= nil) {
 +
  let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) as! [[String:Any]]
 +
 
 +
 
 +
  var arr:Array<BMKHeatMapNode> = Array.init()
 +
 
 +
  for element in jsonObj! {
 +
      let lat = element["lat"]
 +
      let lng = element["lng"]
 +
     
 +
      let node = BMKHeatMapNode.init()
 +
      node.pt = CLLocationCoordinate2DMake(lat as! CLLocationDegrees, lng as! CLLocationDegrees)
 +
      node.intensity = 1.0
 +
     
 +
      arr.append(node)
 +
  }
 +
 +
    heatMap.mData = (arr as NSArray).mutableCopy() as? NSMutableArray
 
}
 
}
</pre>
+
mapView.add(heatMap)</pre>
 
+
</div></div>
 
Json数据样式可根据需求自定义,示例中的json数据样式如下:
 
Json数据样式可根据需求自定义,示例中的json数据样式如下:
 
 
<pre class="prettyprint codestyle">[
 
<pre class="prettyprint codestyle">[
 
{"lng": 116.895579, "lat": 24.306521},
 
{"lng": 116.895579, "lat": 24.306521},
第57行: 第75行:
 
http://mapopen-pub-iossdk.cdn.bcebos.com/newIos/heatingPower001.jpg
 
http://mapopen-pub-iossdk.cdn.bcebos.com/newIos/heatingPower001.jpg
  
<span style="color:#FF0000;">注意:
+
<span style="color:#FF0000;">注意: 自有坐标数据在地图打点,打点的越多,就会根据打点的密集程度,呈现热力图。如拥有的数据是某一坐标上有一个数值(如密度值、趋势值),生成热力图时,可以理解为在某一坐标打点“密度值次”、“趋势值次”,地图即可呈现热力图。</span>
自有坐标数据在地图打点,打点的越多,就会根据打点的密集程度,呈现热力图。如拥有的数据是某一坐标上有一个数值(如密度值、趋势值),生成热力图时,可以理解为在某一坐标打点“密度值次”、“趋势值次”,地图即可呈现热力图。
+
  
但密度值、趋势值可能为小数,需要对数据做一下处理,比如整体密度值、趋势值扩大1000倍取整。 读取坐标数据时,某个坐标读取“1000倍密度值次”,那么坐标点的密度,就会通过热力呈现出来了。
+
<span style="color:#FF0000;">但密度值、趋势值可能为小数,需要对数据做一下处理,比如整体密度值、趋势值扩大1000倍取整。 读取坐标数据时,某个坐标读取“1000倍密度值次”,那么坐标点的密度,就会通过热力呈现出来了。</span>
</span>
+

2020年3月26日 (四) 11:08的版本

热力图简介

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

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

热力图生成的原理

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

构建属于自己的热力图

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

Objective-C
Swift
//添加热力图
-(void)addHeatMap{
    //创建热力图数据类
    BMKHeatMap* heatMap = [[BMKHeatMap alloc]init];
    //创建热力图数据数组
    NSMutableArray* data = [NSMutableArray array];
    //读取数据
    NSData *jsonData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"locations" ofType:@"json"]];
    if (jsonData) {
        NSArray *array = [jsonData objectFromJSONData];
        for (NSDictionary *dic in array) {
            //创建BMKHeatMapNode
            BMKHeatMapNode* heatMapNodeTest = [[BMKHeatMapNode alloc]init];
            CLLocationCoordinate2D coor;
            coor.latitude = [dic[@"lat"] doubleValue];
            coor.longitude = [dic[@"lng"] doubleValue];
            heatMapNodeTest.pt = coor;
            //随机生成点强度
            heatMapNodeTest.intensity = arc4random()*900;
            //添加BMKHeatMapNode到数组
            [data addObject:heatMapNodeTest];
        }
    }
    //将点数据赋值到热力图数据类
    heatMap.mData = data;
    //调用mapView中的方法根据热力图数据添加热力图
    [_mapView addHeatMap:heatMap];
}
heatMap = BMKHeatMap.init()
       
let data: Data? = try! Data.init(contentsOf: URL.init(fileURLWithPath: Bundle.main.path(forResource: "locations", ofType: "json")!))

if (data != nil) {
   let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) as! [[String:Any]]
   
   
   var arr:Array<BMKHeatMapNode> = Array.init()
   
   for element in jsonObj! {
       let lat = element["lat"]
       let lng = element["lng"]
       
       let node = BMKHeatMapNode.init()
       node.pt = CLLocationCoordinate2DMake(lat as! CLLocationDegrees, lng as! CLLocationDegrees)
       node.intensity = 1.0
       
       arr.append(node)
   }

    heatMap.mData = (arr as NSArray).mutableCopy() as? NSMutableArray
}
mapView.add(heatMap)

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}
]

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

heatingPower001.jpg

注意: 自有坐标数据在地图打点,打点的越多,就会根据打点的密集程度,呈现热力图。如拥有的数据是某一坐标上有一个数值(如密度值、趋势值),生成热力图时,可以理解为在某一坐标打点“密度值次”、“趋势值次”,地图即可呈现热力图。

但密度值、趋势值可能为小数,需要对数据做一下处理,比如整体密度值、趋势值扩大1000倍取整。 读取坐标数据时,某个坐标读取“1000倍密度值次”,那么坐标点的密度,就会通过热力呈现出来了。

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消