platform_maps_flutter

一个Flutter包,可为Android和iOS设备提供原生地图。

该插件依赖于Flutter用于嵌入Android和iOS视图的机制。由于该机制目前处于开发者预览阶段,因此该插件也应被视为开发者预览。

该软件包结合了google_maps_flutter插件和apple_maps_flutter,为Android/iOS的原生地图创建了跨平台实现。

截图

Android iOS
Example 1 Example 2
Example 1 Example 2

当前功能

  • 相机移动,包括方位角、航向、倾斜(也可动画)
  • 标记,包括自定义标记图像和信息窗口
  • 不同的地图类型
  • 地图操作,启用/禁用手势,显示当前位置,显示指南针...

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插件,该插件将来会得到改进。

GitHub

https://github.com/LuisThein/platform_maps_flutter