Flutter地图展示插件simple_google_maps_flutter的使用

Flutter地图展示插件simple_google_maps_flutter的使用

开始使用

在使用此插件之前,请务必检查 simple_platform_view 包,因为simple_platform_view有一些缺点需要提前考虑。

使用

平台支持情况

平台 状态
Android
iOS

下载自定义引擎

simple_platform_view 需要对引擎本身进行修改。因此,在Android上运行时,你需要使用一个修改后的版本的Flutter。

下载自定义的Flutter版本 这里

解压下载的flutter.zip文件。

运行以下命令以首次下载自定义引擎工件:

$ path_to_custom_version/flutter/bin/flutter doctor

然后使用它就像正常安装的Flutter一样:

$ path_to_custom_version/flutter/bin/flutter build apk

pubspec.yaml文件中添加以下依赖:

dependencies:
  google_maps_flutter:
  simple_google_maps_flutter:

Android:

将默认的GoogleMapsFlutterPlatform.instance替换为修改后的版本:

import 'package:simple_google_maps_flutter/simple_google_maps_flutter.dart';

[@override](/user/override)
void initState() {
    super.initState();
    if (Platform.isAndroid) {
        SimpleGoogleMapsFlutterAndroid.registerWith();
    }
}

如果你在ScrollView中使用Google Map,添加以下代码到你的MaterialApp中以防止StretchingOverscrollIndicator问题:

import 'package:simple_platform_view/simple_platform_view.dart';

[@override](/user/override)
Widget build(BuildContext context) {
  return MaterialApp(
    // 解决StretchingOverscrollIndicator问题
    scrollBehavior: SimplePlatformViewScrollBehavior(),
  );
}

其他用法与google_maps_flutter包相同。

iOS:

不支持iOS

示例

下面是示例代码:

import 'package:example/select_screen.dart';
import 'package:flutter/material.dart';
import 'package:simple_platform_view/simple_platform_view.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // 这个小部件是你的应用的根。
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // 这是你的应用的主题。
        //
        // 尝试这样做:运行你的应用,你会看到应用有一个蓝色工具栏。然后,不退出应用,
        // 将colorScheme中的seedColor改为Colors.green,然后执行热重载(保存更改或在Flutter支持的IDE中点击热重载按钮,或者如果使用命令行启动应用,则按"r")。
        //
        // 注意计数器并没有重置回零;应用程序状态在重载期间不会丢失。要重置状态,请使用热重启。
        //
        // 这也适用于代码,而不仅仅是值:大多数代码更改可以通过简单的热重载来测试。
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      // 解决StretchingOverscrollIndicator问题
      scrollBehavior: SimplePlatformViewScrollBehavior(),
      home: const SelectScreen(),
    );
  }
}

更多关于Flutter地图展示插件simple_google_maps_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter地图展示插件simple_google_maps_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何使用 simple_google_maps_flutter 插件在 Flutter 应用中展示地图的代码案例。请确保你已经在 pubspec.yaml 文件中添加了该插件的依赖,并且已经运行了 flutter pub get 命令。

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 simple_google_maps_flutter 依赖:

dependencies:
  flutter:
    sdk: flutter
  simple_google_maps_flutter: ^x.y.z  # 请替换为最新版本号

2. 导入插件

在你的 Dart 文件中导入该插件:

import 'package:flutter/material.dart';
import 'package:simple_google_maps_flutter/simple_google_maps_flutter.dart';

3. 使用插件展示地图

下面是一个完整的 Flutter 应用示例,展示了如何使用 simple_google_maps_flutter 插件来展示一个 Google 地图:

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Google Maps Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MapScreen(),
    );
  }
}

class MapScreen extends StatefulWidget {
  @override
  _MapScreenState createState() => _MapScreenState();
}

class _MapScreenState extends State<MapScreen> {
  // API Key from Google Cloud Console
  final String apiKey = 'YOUR_GOOGLE_MAPS_API_KEY'; // 请替换为你的Google Maps API Key

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Google Maps Demo'),
      ),
      body: SimpleGoogleMaps(
        apiKey: apiKey,
        initialPosition: LatLng(37.7749, -122.4194), // 初始位置:旧金山
        zoom: 14,
        onMapCreated: (controller) {
          // 地图创建后的回调,controller可以用来控制地图
          print('Map created!');
        },
        markers: [
          Marker(
            position: LatLng(37.7749, -122.4194),
            infoWindow: InfoWindow(title: 'San Francisco', snippet: 'Golden Gate Bridge'),
          ),
          Marker(
            position: LatLng(34.0522, -118.2437),
            infoWindow: InfoWindow(title: 'Los Angeles', snippet: 'Hollywood Sign'),
          ),
        ],
      ),
    );
  }
}

注意事项

  1. API Key: 确保你已经从 Google Cloud Console 获取了一个有效的 Google Maps API Key,并替换了代码中的 'YOUR_GOOGLE_MAPS_API_KEY'
  2. 权限: 确保你的 API Key 有权限访问 Google Maps 服务,并且你的应用已经启用了相应的 API。
  3. 依赖版本: 确保你使用的是最新版本的 simple_google_maps_flutter 插件,以避免可能的兼容性问题。

以上代码展示了如何使用 simple_google_maps_flutter 插件在 Flutter 应用中展示一个包含标记的 Google 地图。希望这对你有所帮助!

回到顶部