platform_maps_flutter
一个Flutter包,可为Android和iOS设备提供原生地图。
该插件依赖于Flutter用于嵌入Android和iOS视图的机制。由于该机制目前处于开发者预览阶段,因此该插件也应被视为开发者预览。
该软件包结合了google_maps_flutter插件和apple_maps_flutter,为Android/iOS的原生地图创建了跨平台实现。
截图
| Android | iOS |
|---|---|
![]() |
![]() |
![]() |
![]() |
当前功能
- 相机移动,包括方位角、航向、倾斜(也可动画)
- 标记,包括自定义标记图像和信息窗口
- 不同的地图类型
- 地图操作,启用/禁用手势,显示当前位置,显示指南针...
iOS
要在iOS上使用此插件,您需要在应用程序的Info.plist文件中添加一个布尔属性,键为io.flutter.embedded_views_preview,值为YES,以选择加入嵌入式视图预览。您还必须添加键Privacy - Location When In Use Usage Description以及您的使用说明。
Android
在应用程序清单 android/app/src/main/AndroidManifest.xml 中指定您的 API 密钥
<manifest ...
<application ...
<meta-data android:name="com.google.android.geo.API_KEY"
android:value="YOUR KEY HERE"/>
示例用法
class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: PlatformMap(
initialCameraPosition: CameraPosition(
target: const LatLng(47.6, 8.8796),
zoom: 16.0,
),
markers: Set<Marker>.of(
[
Marker(
markerId: MarkerId('marker_1'),
position: LatLng(47.6, 8.8796),
consumeTapEvents: true,
infoWindow: InfoWindow(
title: 'PlatformMarker',
snippet: "Hi I'm a Platform Marker",
),
onTap: () {
print("Marker tapped");
},
),
],
),
myLocationEnabled: true,
myLocationButtonEnabled: true,
onTap: (location) => print('onTap: $location'),
onCameraMove: (cameraUpdate) => print('onCameraMove: $cameraUpdate'),
compassEnabled: true,
onMapCreated: (controller) {
Future.delayed(Duration(seconds: 2)).then(
(_) {
controller.animateCamera(
CameraUpdate.newCameraPosition(
const CameraPosition(
bearing: 270.0,
target: LatLng(51.5160895, -0.1294527),
tilt: 30.0,
zoom: 18,
),
),
);
},
);
},
),
);
}
}
随时欢迎有关使此插件更好的建议和PR。请注意,此软件包提供的功能取决于apple_maps_flutter插件,该插件将来会得到改进。



