插件支持在同一个页面中创建多个独立的地图实例,每个实例有自己的控制器、事件流和 API Key。
本文档介绍多地图实例的创建与使用。
Column(
children: [
SizedBox(
height: 200,
child: TencentMap(
initialCameraPosition: const CameraPosition(
target: LatLng(39.9087, 116.3975),
zoom: 12,
),
onMapCreated: (c) => _controller1 = c,
),
),
SizedBox(
height: 200,
child: TencentMap(
initialCameraPosition: const CameraPosition(
target: LatLng(31.2304, 121.4737),
zoom: 12,
),
onMapCreated: (c) => _controller2 = c,
),
),
],
)
每个 TencentMap Widget 创建一个独立的地图实例,各自有独立的 TencentMapController。
每个地图实例的事件互不干扰:
TencentMap(
// 地图 1 的事件
onTap: (latLng) => print('地图1点击: $latLng'),
onCameraMove: (pos) => print('地图1缩放: ${pos.zoom}'),
...
),
TencentMap(
// 地图 2 的事件(独立)
onTap: (latLng) => print('地图2点击: $latLng'),
onCameraMove: (pos) => print('地图2缩放: ${pos.zoom}'),
...
),
不同地图实例可使用不同的 API Key:
TencentMap(
apiKey: const TencentMapApiKey(androidKey: 'KEY_A', iosKey: 'KEY_A'),
...
),
TencentMap(
apiKey: const TencentMapApiKey(androidKey: 'KEY_B', iosKey: 'KEY_B'),
...
),
注意:多 Key 支持需要 iOS SDK ≥ 6.13.0(per-instance Key)。低版本 iOS SDK 使用的是单例 Key,第二个地图实例的 Key 设置会被忽略。
注意:每个地图实例都会创建独立的 MapView 和 GL 渲染上下文,会增加内存和 GPU 开销。建议同一页面不要超过 3 个地图实例。如果只需要在不同位置显示地图,考虑使用单个地图 + 多个 Marker 替代。
有帮助
没帮助