サードパーティのGaodeマップとBaiduマップの基本的なポジショニングの実現によるフラッタードッキング

サードパーティのGaodeマップとBaiduマップの基本的なポジショニングの実現によるフラッタードッキング

原文:@ As.Kai
ブログアドレス:https://blog.csdn.net/qq_42362997
以下の内容が参考になりましたら、よろしくお願いします〜

Gaodeマップ:

まず、Gaodeマップポジショニング関数の依存関係パッケージをインポートします。#高
ドイツ語マップポジショニング統合
amap_location:^ 0.2.0
最新の依存関係パッケージバージョン表示:
ポータル

構成:

アプリの下のbuild.gradleに構成を追加します

android {
    .... 你的代码
    defaultConfig {
        .....
        manifestPlaceholders = [
                AMAP_KEY : "你的key", /// 高德地图key
        ]
    }
    ...你的代码
    dependencies {
        /// 注意这里需要在主项目增加一条依赖,否则可能发生编译不通过的情况
        implementation 'com.amap.api:location:latest.integration'
        ...你的代码
    }

AutoNavi Open Platformにアクセスして、キーを申請します。
わからない場合は、Baiduを検索する方法はたくさんあります。
ここでは詳しく説明せず、簡単なポジショニングを実現する方法について説明します。

使い方:

初期位置監視方法の作成(非同期)

void _initLocation() async {
  AMapLocationClient.startup(new AMapLocationOption(
      desiredAccuracy: CLLocationAccuracy.kCLLocationAccuracyHundredMeters));
  //监听坐标时时变换
  AMapLocationClient.onLocationUpate.listen((event) {
    if (!mounted) return;
    setState(() {
      lat = event.latitude.toString();
      long = event.longitude.toString();
      city = event.formattedAddress.toString();
      print('pro=${event.formattedAddress}');
    });
  });


  AMapLocationClient.startLocation();
}

レイアウトコンポーネントにボタンを作成し、クリックイベントを使用して簡単な配置を実現します

child: new RaisedButton(
  onPressed: () {
    _initLocation();
    setState(() {
      textLocation = '高德地图定位集成';
    });

このようにして、AutoNaviのサードパーティのポジショニング統合が完了しました。
効果:
ここに画像の説明を挿入

関連コード:

//高德地图
var lat = '';
var long = '';
var city = '';


//初始化定位监听
void _initLocation() async {
  AMapLocationClient.startup(new AMapLocationOption(
      desiredAccuracy: CLLocationAccuracy.kCLLocationAccuracyHundredMeters));
  //监听坐标时时变换
  AMapLocationClient.onLocationUpate.listen((event) {
    if (!mounted) return;
    setState(() {
      lat = event.latitude.toString();
      long = event.longitude.toString();
      city = event.formattedAddress.toString();
      print('pro=${event.formattedAddress}');
    });
  });


  AMapLocationClient.startLocation();
}
return new Container(
          child: new Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              new Text(
                textLocation,
                style: TextStyle(color: Colors.white,fontSize: ScreenUtil().setSp(30.0)),
              ),
              new Text(
                '经度:$long',
                style: TextStyle(color: Colors.white,fontSize: ScreenUtil().setSp(30.0)),
              ),
              new Text(
                '纬度:$lat',
                style: TextStyle(color: Colors.white,fontSize: ScreenUtil().setSp(30.0)),
              ),
              new Text(
                '定位:${city}',
                overflow: TextOverflow.ellipsis,
                style: TextStyle(color: Colors.white,fontSize: ScreenUtil().setSp(30.0),),
                maxLines: 1,
              ),
              SizedBox(
                height: ScreenUtil().setHeight(40.0),
              ),
              new Center(
                child: new RaisedButton(
                  onPressed: () {
                    _initLocation();
                    setState(() {
                      textLocation = '高德地图定位集成';
                    });
                  },
                  color: Colors.orange,
                  shape: RoundedRectangleBorder(
                    borderRadius: BorderRadius.circular(20.0),
                  ),
                  child: new Text(
                    '高德定位',
                    style: TextStyle(
                        color: Colors.white,
                        fontSize: ScreenUtil().setSp(30.0)),
                  ),
                ),
              ),
            ],
          ),
        );

破棄:
AMapLocationClient.shutdown();

Baiduのポジショニング:

また、最初に公式の依存関係をインポートし
ます#Baiduマップの場所の統合
flutter_bmflocation:^ 1.0.3
依存関係パッケージ最新バージョン表示:
ポータル

Baiduの公式文書は非常に詳細です。理解できない場合は、さらに公式文書を読むことができます。
ここで簡単に紹介します。

AndroidManifestに追加

<meta-data
        android:name="com.baidu.lbsapi.API_KEY"
        android:value="你的key"
/>
LocationFlutterPlugin _locationPlugin = new LocationFlutterPlugin();
BaiduLocationAndroidOption androidOption = new BaiduLocationAndroidOption();
//获取的地址信息
StreamSubscription<Map<String, Object>> _locationListener;


void initBaiduLocation() {
  print('进入百度定位');
  androidOption.setCoorType("bd09ll"); // 设置返回的位置坐标系类型
  androidOption.setIsNeedAltitude(false); // 设置是否需要返回海拔高度信息
  androidOption.setIsNeedAddres(true); // 设置是否需要返回地址信息
  androidOption.setIsNeedLocationPoiList(false); // 设置是否需要返回周边poi信息
  androidOption.setIsNeedNewVersionRgc(true); // 设置是否需要返回最新版本rgc信息
  androidOption.setIsNeedLocationDescribe(true); // 设置是否需要返回位置描述
  androidOption.setOpenGps(true); // 设置是否需要使用gps
  androidOption.setLocationMode(LocationMode.Hight_Accuracy); // 设置定位模式
  androidOption.setScanspan(5000); // 设置发起定位请求时间间隔
  Map androidMap = androidOption.getMap();


  //ios定位参数设置(用不上也要设置,按默认就可以了)
  BaiduLocationIOSOption iosOption = new BaiduLocationIOSOption();
  Map iosdMap = iosOption.getMap();


  _locationPlugin.prepareLoc(androidMap, iosdMap); //ios和安卓定位设置
  _locationPlugin.requestPermission(); //请求定位权限


  _locationPlugin.startLocation(); //开始定位


  //  获取定位结果
  _locationListener = _locationPlugin.onResultCallback().listen((Map<String, Object> event) {
    //event就是获取到的结果,是订阅模式的,需要一直监听
    print('event数据:${event.toString()}');
    print('百度地图定位地址:${event["address"]}'); //打印地址
    print('百度地图省份信息:${event["province"]}'); //省份
    setState(() {
      lat = event['latitude'].toString();
      long = event['longitude'].toString();
      city = event['address'].toString();
    });
  });
}

销毁:
if(_locationListener!= null){ _ locationListener.cancel(); }

上記は、統合されたGaodeマップ+ Baiduマップのポジショニングデモの実装です。
理解できない場合は、プライベートメッセージまたはコメントで私に連絡してください。デモをお送りします。

好きになることを忘れないでください〜
私に従って、一緒に成長してください!
@ As.Kai

おすすめ

転載: blog.csdn.net/qq_42362997/article/details/112969127