google_map_location_picker
使用官方 google_maps_flutter 的位置选择器。
入门
在 https://cloud.google.com/maps-platform/ 获取 API 密钥。
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"/>
iOS
在应用程序代理 ios/Runner/AppDelegate.m 中指定您的 API 密钥
#include "AppDelegate.h"
#include "GeneratedPluginRegistrant.h"
#import "GoogleMaps/GoogleMaps.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GMSServices provideAPIKey:@"YOUR KEY HERE"];
[GeneratedPluginRegistrant registerWithRegistry:self];
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
@end
或者在您的 Swift 代码中,在应用程序代理 ios/Runner/AppDelegate.swift 中指定您的 API 密钥
import UIKit
import Flutter
import GoogleMaps
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
) -> Bool {
GMSServices.provideAPIKey("YOUR KEY HERE")
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
通过向应用的 Info.plist 文件添加一个布尔属性来选择加入嵌入式视图预览
键为 io.flutter.embedded_views_preview,值为 YES。
使用方法
为了在库中进行消息本地化,请添加到 MaterialApp
import 'package:google_map_location_picker/generated/i18n.dart' as location_picker;
MaterialApp(
localizationsDelegates: const [
location_picker.S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const <Locale>[
Locale('en', ''),
Locale('ar', ''),
],
home: ...
)
import 'package:google_map_location_picker/google_map_location_picker.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
LocationResult result = await LocationPicker.pickLocation(context, apiKey);
笔记
以下权限不是使用 Google Maps Android API v2 所必需的,但建议使用。
android.permission.ACCESS_COARSE_LOCATION 允许API使用WiFi或移动蜂窝数据(或两者)来确定设备的位置。API返回的位置精度大约相当于一个街区。
android.permission.ACCESS_FINE_LOCATION 允许 API 从可用的位置提供商(包括全球定位系统 (GPS) 以及 WiFi 和移动蜂窝数据)确定尽可能精确的位置。
如果您定位的Android版本是Android 5.0(API级别21)或更高,并且使用了ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION权限,以便分别从网络或GPS接收位置更新,您还必须显式声明您的应用使用了android.hardware.location.network或android.hardware.location.gps硬件功能。
<uses-feature android:name="android.hardware.location.network" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
以下权限在软件包清单中定义,并在构建时自动合并到您应用的清单中。您**不需要**在清单中显式添加它们。
android.permission.INTERNET API用于从Google Maps服务器下载地图瓦片。
android.permission.ACCESS_NETWORK_STATE 允许API检查连接状态,以确定是否可以下载数据。