如何在Flutter中与Google Maps集成?

时间:2019-01-16 20:07:21

标签: google-maps flutter

我开始用flutter开发,我想使用google_maps_flutter包。

我正在阅读中级文章,以便将地图添加到我的应用(https://medium.com/flutter-io/google-maps-and-flutter-cfb330f9a245)。

我在AppDelegate.m中添加了此代码

#include "AppDelegate.h"
#include "GeneratedPluginRegistrant.h"
#import "GoogleMaps/GoogleMaps.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GMSServices provideAPIKey:@"******"];
  [GeneratedPluginRegistrant registerWithRegistry:self];
  return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end

并将其发送到Info.plist

<key>io.flutter.embedded_views_preview</key>
<true/>

这是小部件代码:

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

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  GoogleMapController mapController;

  final LatLng _center = const LatLng(45.521563, -122.677433);

  void _onMapCreated(GoogleMapController controller) {
    mapController = controller;
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Maps Sample App'),
          backgroundColor: Colors.green[700],
        ),
        body: GoogleMap(
          onMapCreated: _onMapCreated,
          options: GoogleMapOptions(
            cameraPosition: CameraPosition(
              target: _center,
              zoom: 11.0,
            ),
          ),
        ),
      ),
    );
  }
}

作为帖子中的示例,但不幸的是,我得到了一个带有google maps小部件的屏幕,但未显示地图。像这样:https://i.imgur.com/HGam5ac.jpg(我无法上传图片,因为信誉低,很抱歉:()。

sdk是否有问题?还是代码中需要更改?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并花了一些时间来解决它。

请注意,建议不要取消限制API密钥,这应该是一个临时解决方案。

首先,如果您尚未在Google Cloud Platform帐户中启用计费功能,则无法使用Google Maps API。

我通过确保不限制我的API密钥来解决此问题。 我删除了以前的API密钥并创建了一个新的API密钥,但是这次我没有限制该API密钥。

此后正确加载了地图。

如果您打算使用地理定位服务,可能会有助于将以下代码添加到ios/Runner/Info.plist文件中

<key>NSLocationWhenInUseUsageDescription</key>
<string>Reason for requesting location permission</string>

如果您不知道如何创建API密钥,请点击此链接Get API Key.

这是我的API密钥配置的样子

enter image description here

这就是我的应用程序中的地图页面的样子

enter image description here