一、申请APIkey

前往 https://lbs.amap.com/api/android-sdk/guide/create-project/get-key 申请APIkey,新建一个应用,分别添加key,其中要获取SHA1值。

  • Mac下AndroidStudio获取SHA1值:
    第一步、打开Android Studio的Terminal工具;
    第一步、输入命令:cd ~/.android ;
    第二步、输入命令:keytool -list -v -keystore debug.keystore ;
    第四步、输入Keystore密码,一般直接回车就行,或者输入android。

这里就获取到SHA1值,就可以在高德地图后台申请APIkey了。

而packageName就在build.gradle(app)里,取applicationId。

二、配置集成高德地图

依賴

amap_base: ^0.3.5

IOS配置

ios-Runner-info.plist添加

    <string>需要用到定位</string>
    <key>UIBackgroundModes</key>
    <array>
        <string>location</string>
    </array>

 

 

Android配置,在build.gradle(app)中添加AMAP_KEY即可。

android {
    .... 你的代码
    defaultConfig {
        .....
        manifestPlaceholders = [
                AMAP_KEY : "aa9f0cf8574400f2af0078392c556e25", /// 高德地图key
        ]
     multiDexEnabled true
}
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    //高德
    implementation "com.amap.api:location:latest.integration"
}

添加 implementation "com.amap.api:location:latest.integration"

在 application 添加

<meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="你的key"/>

在application外

<uses-permission android:name="android.permission.INTERNET" />
    <!--用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
    <!--用于访问GPS定位-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
    <!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
    <!--用于访问网络,网络定位需要上网-->
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <!--用于申请调用A-GPS模块-->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>

main添加AMap.init('1a83798190514cf82dbe799d6d4ac71c');

void main() async{
  AMap.init('1a83798190514cf82dbe799d6d4ac71c');
  var userState = UserState();
  var providers = Providers();
  var counter = Counter();
  providers
    //多個狀態的管理
    ..provide(Provider<Counter>.value(counter))
    ..provide(Provider<UserState>.value(userState));
  //runApp(MyApp());
  runApp(
    ProviderNode(
      child: MyApp(),
      providers: providers,
    ),
  );
}

主要代碼

View Code

 

獲取當前定位

  final _amapLocation = AMapLocation();
  var _result = '';

  //初始化定位监听
  void _initLocation() async {
    _amapLocation.init();

    final options = LocationClientOptions(
      isOnceLocation: false,
      locatingWithReGeocode: true,
    );

    if (await Permissions().requestPermission()) {
      _amapLocation.startLocate(options).listen((_) => setState(() {
            _result =
                '坐标:${_.longitude},${_.latitude} @ ${DateTime.now().hour}:${DateTime.now().minute}:${DateTime.now().second}';
          }));
    } else {
      setState(() {
        _result = "无定位权限";
      });
    }
  }

關閉定位

最后在dispose中关闭定位,防止内存泄漏

  @override
  void dispose() {
    //注意这里关闭
    _amapLocation.stopLocate();
    super.dispose();
  }

ios編譯報錯

终于解决了,不用加use_framework!,直接用Xcode打开项目click Runner > Tagets > Runner > Build Settings>All, search Compile Sources As, change the value to Objective-C++;希望对后面遇到此问题的小伙伴有所帮助,

参考:https://github.com/shaqian/flutter_tflite/issues/7,

參考:https://github.com/boomcx/amap_map

posted on 2019-12-26 14:36  诉说静风  阅读(1240)  评论(0编辑  收藏  举报

Live2D
快把你的小爪子拿开!