Android百度地图额度0,androidsdk | 百度地图API SDK

更新时间:2020-06-23

自定义瓦片图层

地图SDK自v3.6.0起,新增瓦片图层(TileOverlay), 该图层支持开发者添加自有瓦片数据,包括本地加载和在线下载两种方式。该图层可随地图的平移、缩放、旋转等操作做相应的变换,它仅位于底图之上(即瓦片图层将会遮挡底图,不遮挡其他图层),瓦片图层的添加顺序不会影响其他图层(例如:POI搜索图层、我的位置图层等)的叠加关系。

通过瓦片图层可对基础底层地图添加额外的特性,如:某个商场的室内信息、某个景区的详情等等。自定义图层类是MBKTileOverlay,它定义了能添加到基础底层地图的图片集合。

适用于开发者拥有某一区域的地图,并希望使用此区域地图覆盖相应位置的百度地图。

瓦片图划分规则

百度地图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 = new FileTileProvider() {

@Override

public Tile getTile(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) {

return null;

}

// 通过瓦片图bitmap构造Tile示例

offlineTile = new Tile(bm.getWidth(), bm.getHeight(), toRawData(bm));

bm.recycle();

return offlineTile;

}

@Override

public int getMaxDisLevel() {

return MAX_LEVEL;

}

@Override

public int getMinDisLevel() {

return MIN_LEVEL;

}

};

//构造TileOverlayOptions对象并设置FileTileProvider等属性

TileOverlayOptions options = new TileOverlayOptions();

// 构造显示瓦片图范围,当前为世界范围

LatLng northeast = new LatLng(80, 180);

LatLng southwest = new LatLng(-80, -180);

options.tileProvider(tileProvider)

.setPositionFromBounds(new LatLngBounds.Builder().include(northeast).include(southwest).build());

//向地图添加离线瓦片图对象

tileOverlay = mBaiduMap.addTileLayer(options);

显示效果如图:

e94bfd0fab0b11c7438e22e18092d755.png

2、在线下载

开发者需要实现UrlTileProvider抽象类,在其中设置缩放级别范围和在线瓦片图的URL地址。

示例代码如下:

/**

* 定义瓦片图的在线Provider,并实现相关接口

* MAX_LEVEL、MIN_LEVEL 表示地图显示瓦片图的最大、最小级别

* urlString 表示在线瓦片图的URL地址

*/

TileProvider tileProvider = new UrlTileProvider() {

@Override

public int getMaxDisLevel() {

return MAX_LEVEL;

}

@Override

public int getMinDisLevel() {

return MIN_LEVEL;

}

//传入在线瓦片图的URL地址

@Override

public String getTileUrl() {

return urlString;

}

};

TileOverlayOptions options = new TileOverlayOptions();

// 构造显示瓦片图范围,当前为世界范围

LatLng northeast = new LatLng(80, 180);

LatLng southwest = new LatLng(-80, -180);

// 通过option指定相关属性,向地图添加在线瓦片图对象

tileOverlay = mBaiduMap.addTileLayer(options.tileProvider(tileProvider).setMaxTileTmp(TILE_TMP)

.setPositionFromBounds(new LatLngBounds.Builder().include(northeast).include(southwest).build());

显示效果如图:

ff4914fd08f366b6f8ff483aaaa5328a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值