Flutter嵌入谷歌地图插件google_maps_embed_flutter的使用

Flutter嵌入谷歌地图插件google_maps_embed_flutter的使用

本文将介绍如何在Flutter应用中使用google_maps_embed_flutter插件来嵌入谷歌地图。通过该插件,您可以轻松地在您的Flutter应用中添加谷歌地图,并且支持多种地图模式。

开始使用

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

dependencies:
  google_maps_embed_flutter: ^1.0.0

然后运行flutter pub get以获取该库。

功能

google_maps_embed_flutter插件支持以下地图模式:

  • 地点(Place)
  • 视图(View)
  • 路线(Directions)
  • 街景(Streetview)
  • 搜索(Search)

使用示例

为了展示如何使用google_maps_embed_flutter插件,我们提供了一个基本示例。在该示例中,我们将创建一个包含多个选项卡的应用程序,每个选项卡显示不同模式的地图。

首先,确保您已经在Google Cloud Platform上生成了API密钥。请参阅Google Cloud Platform文档了解如何生成API密钥。

示例代码

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

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

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> with SingleTickerProviderStateMixin {
  // 填写您的API密钥
  static const kEmbedMapApiKey = "YOUR_API_KEY_HERE";
  int selectedIndex = 0;

  // 不同模式的参数
  static const kSegments = [
    "Place",
    "View",
    "Directions",
    "Street view",
    "Search"
  ];

  // 初始化参数数组
  late final parameters = [
    PlaceParameters(
        key: kEmbedMapApiKey,
        q: Place.address(
            "1600 Amphitheatre Parkway, Mountain View, CA 94043, United States")),
    const ViewParameters(
        key: kEmbedMapApiKey, center: Coordinates(37.4220041, -122.0862462)),
    DirectionParameters(
        key: kEmbedMapApiKey,
        origin: Place.id("ChIJ2eUgeAK6j4ARbn5u_wAGqWA"),
        destination: Place.id("ChIJE9on3F3HwoAR9AhGJW_fL-I")),
    const StreetViewParameters(
        key: kEmbedMapApiKey, location: Coordinates(46.414382, 10.013988)),
    SearchParameters(
        key: kEmbedMapApiKey, q: Place.name("record stores in Seattle"))
  ];

  // 创建TabController
  late final tabController =
      TabController(length: kSegments.length, vsync: this);

  // 处理选项卡选择变化
  void onSelectionChanged(int index) {
    setState(() {
      selectedIndex = index;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          bottom: PreferredSize(
            preferredSize: Size.zero,
            child: TabBar(
              isScrollable: true,
              controller: tabController,
              tabs: kSegments.map((e) => Tab(text: e)).toList(),
              onTap: onSelectionChanged,
            ),
          ),
        ),
        body: EmbedGoogleMap(
          parameters: parameters[selectedIndex],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中嵌入谷歌地图插件 google_maps_embed_flutter 的代码示例。这个插件允许你直接在Flutter应用中嵌入静态的谷歌地图。

步骤 1: 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  google_maps_embed_flutter: ^0.1.0  # 请注意版本号,使用最新版本

然后运行 flutter pub get 来获取依赖。

步骤 2: 配置Android和iOS项目

由于这个插件涉及到外部服务(谷歌地图),你需要在Android和iOS项目中配置API密钥。

Android

android/app/src/main/AndroidManifest.xml 文件中添加API密钥:

<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="YOUR_ANDROID_API_KEY"/>

YOUR_ANDROID_API_KEY 替换为你的实际API密钥。

iOS

对于iOS,你需要在 ios/Runner/Info.plist 文件中添加API密钥(虽然对于静态地图嵌入通常不需要,但如果是其他谷歌地图服务可能会需要)。然而,google_maps_embed_flutter 插件主要依赖URL嵌入,通常不需要在iOS的Info.plist中配置API密钥。

步骤 3: 使用插件

在你的Dart文件中,你可以按照以下方式使用 google_maps_embed_flutter 插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Google Maps Embed Example'),
        ),
        body: Center(
          child: GoogleMapsEmbed(
            header: GoogleMapsEmbedHeader(
              title: "My Location",
              subtitle: "1600 Amphitheatre Parkway, Mountain View, CA",
            ),
            mapUrl: "https://www.google.com/maps/embed/v1/place?key=YOUR_API_KEY&q=1600+Amphitheatre+Parkway,+Mountain+View,+CA",
          ),
        ),
      ),
    );
  }
}

在这个例子中,GoogleMapsEmbed 组件用于嵌入谷歌地图。你需要替换 YOUR_API_KEY 为你的实际API密钥,并且URL中的 q 参数指定了地图的中心位置。

注意事项

  1. API密钥: 确保你的API密钥具有访问谷歌地图静态API的权限,并且已经配置了正确的账单信息(谷歌地图API可能不是免费的)。
  2. URL格式: 确保你的 mapUrl 是正确的,并且符合谷歌地图静态API的规范。

这样,你就可以在Flutter应用中嵌入谷歌地图了。希望这个示例对你有帮助!

回到顶部