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

  • 相关阅读:
    js跨域之window.name跨域解决方案
    html中用IE条件判断
    收集的CSS浏览器兼容问题大全(粘贴过来,会用到的)
    移动网站开发系列(一)
    离散数学归谬法与反证法的比较
    端口未正常关闭解决方法
    nodejs 连接 mysql 出现 Client does not support authentication protocol requested by server; consider upgrading MySQL client
    http规范
    退役后的苦逼高三生活续++
    NOIP2018 游记
  • 原文地址:https://www.cnblogs.com/ssjf/p/12101928.html
Copyright © 2011-2022 走看看