并非所有mapbox.com的服务在中国提供
Android 地图 SDK
并非所有mapbox.com的服务在中国提供
翻译:冯雨晴 审阅:肖帅
使用 Mapbox Maps SDK for Android 的快照功能,可以获得一张用于安卓项目的静态地图图片。可以获取任意 Mapbox 地图的快照,并将图片添加至:
ListView
/RecyclerView
Bitmap
的地方使用快照功能时不需要显示 Mapbox 地图。MapSnapshotter
可以在应用程序的任何地方调用。
除非您已经缓存了地图切片,否则设备 将 需要网络连接来下载渲染地图和快照所需的样式的地图切片。
快照的获取可以在设备的后台线程中进行,不会影响用户体验。
快照功能不同于Mapbox 静态图像 API。MapboxStaticMap
类帮助您构建一个 URL 来请求静态地图图像,请求获得的图像会看起来像一个没有交互性或控制能力的嵌入式地图。
MapSnapshotter
构造函数需要一个MapSnapshotter.Options
对象。
MapSnapshotter.Options snapShotOptions = new MapSnapshotter.Options(500, 500); snapShotOptions.withRegion(mapboxMap.getProjection().getVisibleRegion().latLngBounds); snapShotOptions.withStyle(mapboxMap.getStyle().getUrl()); MapSnapshotter mapSnapshotter = new MapSnapshotter(this, snapShotOptions);
val snapShotOptions = MapSnapshotter.Options(500, 500) snapShotOptions.withRegion(mapboxMap.projection.visibleRegion.latLngBounds) snapShotOptions.withStyle(mapboxMap.style!!.url) val mapSnapshotter = MapSnapshotter(this, options)
以下是类MapSnapshotter.Options
可用的一些属性。它们的调用方法和上面的代码片段中的withRegion()
和withStyle()
一样。
函数方法 | 描述 |
---|---|
withApiBaseUrl | 指定用于Maps API终端的具体URL。您基本不需要修改API的基本URL。 |
withLocalIdeographFontFamily | 设置用于在本地生成符号的字体集,包括中日韩越统一表意文字和朝鲜文音节等。 |
withCameraPosition | 用于快照图像的相机位置。如果调用了withRegion 函数,该位置的值将会被覆盖。 |
withLogo | 一个用于决定快照图像中是否包含Mapbox logo的布尔标识。 |
withPixelRatio | 使用的像素比例,默认值为1。 |
withRegion | 用于显示快照图像的区域,使用于相机位置之后。 |
withStyle | 用于快照图像的地图样式。 |
withStyleJson | 使用的地图样式JSON,而不是地图样式URL。 |
一旦您创建了您的MapSnapshotter
对象,就会调用start()
启动快照进程。当MapSnapshot
准备就绪后,调用snapshot.getBitmap()
来检索所需的Bitmap
图像。
mapSnapshotter.start(new MapSnapshotter.SnapshotReadyCallback() { @Override public void onSnapshotReady(MapSnapshot snapshot) { // Display, share, or use bitmap image how you'd like Bitmap bitmapImage = snapshot.getBitmap(); }});
mapSnapshotter?.start { snapshot -> // Display, share, or use bitmap image how you'd like val bitmapOfMapSnapshotImage = snapshot.bitmap }
一旦您获取了Bitmap
图像,您就可以随心所欲地使用该图像。
Mapbox Android的demo应用程序有两个展示了如何使用快照Bitmap
图像的例子: