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检查连接状态,以确定是否可以下载数据。

GitHub

https://github.com/humazed/google_map_location_picker