zoukankan      html  css  js  c++  java
  • Flutter -amap_base調用高德地圖

    一、申请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

  • 相关阅读:
    APS系统如何落地?用户实际痛点解析!
    供应链如何优化?高级排程系统为其运算
    不懂APS系统?十个问答让你对APS瞬间明明白白
    智能制造主战场在哪?数字化车间建设尤为重要
    中国制造转型的关键在哪里?智能制造点亮发展明灯
    你家的APS系统有这些功能吗?排程系统功能盘点
    微软正开发Office Reader和Office Lens
    C#的3DES加密解密算法
    如何在SharePoint2010中创建自定义电子邮件警报处理程序
    规划SharePoint2010的管理员密码更改
  • 原文地址:https://www.cnblogs.com/ssjf/p/12101928.html
Copyright © 2011-2022 走看看