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

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

地图sdk自v3.6.0起,新增瓦片图层(tileoverlay), 该图层支持开发者添加自有瓦片数据,包括本地加载和在线下载两种方式。该图层可随地图的平移、缩放、旋转等操作做相应的变换,它仅位于底图之上(即瓦片图层将会遮挡底图,不遮挡其他图层),瓦片图层的添加顺序不会影响其他图层(例如:poi搜索图层、我的位置图层等)的叠加关系。
通过瓦片图层可对基础底层地图添加额外的特性,如:某个商场的室内信息、某个景区的详情等等。自定义图层类是tileoverlay,它定义了能添加到基础底层地图的图片集合。
适用于开发者拥有某一区域的地图,并希望使用此区域地图覆盖相应位置的百度地图。

瓦片图划分规则

百度地图sdk会根据不同的比例尺将地图划分成若干个瓦片,并且以中心点经纬度(0,0)开始计算瓦片,当地图显示缩放级别增大时,每一个瓦片被划分成4 个瓦片。
如:地图级别为0时,只有1张瓦片地图级别为1时,会分成 1 * 4 = 4 张瓦片依次类推,地图级别为n时,总共划分的瓦片为:4的n次方,为了保证瓦片的显示效果,第n级的瓦片显示的地图level范围为[n - 0.5, n 0.5)

瓦片图绘制方式

瓦片图层的绘制方式包括本地加载和在线下载两种方式。

1、本地加载

瓦片图层通过tileoverlay类定义,开发者需要实现filetileprovider抽象类来加载打包至项目中的瓦片图资源,并通过tileoverlayoptions类设置。通过addtilelayer方法将tileoverlayoptions对象添加至地图。
注:瓦片图的尺寸必须满足256 * 256
示例代码如下:

/**
* 定义瓦片图的离线provider,并实现相关接口
* max_level、min_level 表示地图显示瓦片图的最大、最小级别
* tile 对象表示地图每个x、y、z状态下的瓦片对象
*/
tileprovider =newfiletileprovider(){
@override
publictilegettile(int x, int y, int z){
// 根据地图某一状态下x、y、z加载指定的瓦片图
string filedir ="localtileimage/" z "/" z "_" x "_" y ".jpg";
//将瓦片图资源解析为bitmap
bitmap bm =getfromassets(filedir);
if(bm ==null){
returnnull;
}
// 通过瓦片图bitmap构造tile示例
offlinetile =newtile(bm.getwidth(), bm.getheight(),torawdata(bm));
bm.recycle();
return offlinetile;
}
@override
public int getmaxdislevel(){
returnmax_level;
}
@override
public int getmindislevel(){
returnmin_level;
}
};
//构造tileoverlayoptions对象并设置filetileprovider等属性
tileoverlayoptions options =newtileoverlayoptions();
// 构造显示瓦片图范围,当前为世界范围
latlng northeast =newlatlng(80,180);
latlng southwest =newlatlng(-80,-180);
options.tileprovider(tileprovider)
.setpositionfrombounds(newlatlngbounds.builder().include(northeast).include(southwest).build());
//向地图添加离线瓦片图对象
tileoverlay = mbaidumap.addtilelayer(options);

显示效果如图:

瓦片图
2、在线下载

开发者需要实现urltileprovider抽象类,在其中设置缩放级别范围和在线瓦片图的url地址。
示例代码如下:

/**
* 定义瓦片图的在线provider,并实现相关接口
* max_level、min_level 表示地图显示瓦片图的最大、最小级别
* urlstring 表示在线瓦片图的url地址
*/
tileprovider tileprovider =newurltileprovider(){
@override
public int getmaxdislevel(){
returnmax_level;
}
@override
public int getmindislevel(){
returnmin_level;
}
//传入在线瓦片图的url地址
@override
publicstringgettileurl(){
return urlstring;
}
};
tileoverlayoptions options =newtileoverlayoptions();
// 构造显示瓦片图范围,当前为世界范围
latlng northeast =newlatlng(80,180);
latlng southwest =newlatlng(-80,-180);
// 通过option指定相关属性,向地图添加在线瓦片图对象
tileoverlay = mbaidumap.addtilelayer(options.tileprovider(tileprovider).setmaxtiletmp(tile_tmp)
.setpositionfrombounds(newlatlngbounds.builder().include(northeast).include(southwest).build());

显示效果如图:

瓦片图

上一篇

批量添加和删除

下一篇

opengl绘制

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

网站地图