サードパーティの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