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

浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
绘制overlay
下载开发文档

本章节将对自定义图层(图片覆盖物groundoverlay)、自定义热力图(heatmap)做详细说明。

自定义图片图层(图片覆盖物groundovelay)

ground覆盖物,是一种位于底图和底图标注层之间的特殊overlay,该图层不会遮挡地图标注信息。通过groundoverlayoptions类来设置,开发者可以通过groundoverlayoptions类设置一张图片,该图片可随地图的平移、缩放、旋转等操作做相应的变换。
示例代码如下:

//定义ground的显示地理范围
latlng southwest =newlatlng(39.92235,116.380338);
latlng northeast =newlatlng(39.947246,116.414977);
latlngbounds bounds =newlatlngbounds.builder()
.include(northeast)
.include(southwest)
.build();
//定义ground显示的图片
bitmapdescriptor bdground =bitmapdescriptorfactory.fromresource(r.drawable.ground_overlay);
//定义groundoverlayoptions对象
overlayoptions ooground =newgroundoverlayoptions()
.positionfrombounds(bounds)
.image(bdground)
.transparency(0.8f);//覆盖物透明度
//在地图中添加ground覆盖物
mbaidumap.addoverlay(ooground);

效果如图:

自定义图片层
自定义热力图

热力图是用不同颜色的区块叠加在地图上描述人群分布、密度和变化趋势的一个产品,百度地图sdk将绘制热力图的能力为开发者开放,帮助开发者利用自有数据,构建属于自己的热力图,提供丰富的展示效果。
注意:此处的“热力图功能”不同于“百度城市热力图”。百度城市热力图通过简单的接口调用,开发者可展示百度数据的热力图层。而此处的热力图功能,需要开发者传入自己的位置数据(坐标),然后sdk会根据热力图绘制规则,为开发者做本地的热力图渲染绘制。

热力图生成的原理

1. 设置颜色变化
//设置渐变颜色值
int[]default_gradient_colors={color.rgb(102,225,0),color.rgb(255,0,0)};
//设置渐变颜色起始值
float[]default_gradient_start_points={0.2f, 1f};
//构造颜色渐变对象
gradient gradient =newgradient(default_gradient_colors,default_gradient_start_points);
2. 准备数据
//以下数据为随机生成地理位置点,开发者根据自己的实际业务,传入自有位置数据即可
list<latlng> randomlist =newarraylist<latlng>();
random r =newrandom();
for(int i =0; i <500; i){
// 116.220000,39.780000 116.570000,40.150000
int rlat = r.nextint(370000);
int rlng = r.nextint(370000);
int lat =39780000 rlat;
int lng =116220000 rlng;
latlng ll =newlatlng(lat /1e6, lng /1e6);
randomlist.add(ll);
}
3. 添加显示热力图
//构造heatmap
//在大量热力图数据情况下,build过程相对较慢,建议放在新建线程实现
heatmap mcustomheatmap =newheatmap.builder()
.data(randomlist)
.gradient(gradient)
.build();
//在地图上添加自定义热力图
mbaidumap.addheatmap(mcustomheatmap);

显示效果如图:

移除热力图

heatmap.removeheatmap();

通过带权值的位置点数据构造heatmap

大量自有坐标数据在地图打点,根据打点的密集程度,呈现热力图。如果开发者拥有的数据是一些坐标上的一个数值(如密度值、趋势值),通过builder的 weighteddata方法传入数据来构造。

//通过带权值的位置点数据构造heatmap
heatmap mcustomheatmap =newheatmap.builder()
.weighteddata(randomlist1)
.gradient(gradient)
.build();

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

上一篇

点聚合

下一篇

批量添加和删除

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

网站地图