Toggle navigation
Toggle navigation
This project
Loading...
Sign in
OnePoem
/
OnePoem-App
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
reason
2022-08-11 07:38:41 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
27d5180a6d092ceaa6c6ad454c49d252d4ba488d
27d5180a
1 parent
05b0df1c
百度定位逻辑
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
124 additions
and
29 deletions
assets/images/map/icon_mark.png
lib/main.dart
lib/poem/page/select_address_page.dart
pubspec.lock
pubspec.yaml
assets/images/map/icon_mark.png
0 → 100644
View file @
27d5180
2.1 KB
lib/main.dart
View file @
27d5180
...
...
@@ -89,24 +89,9 @@ Future<void> main() async {
/// 动态申请定位权限
requestPermission
();
LocationFlutterPlugin
myLocPlugin
=
LocationFlutterPlugin
();
/// 设置用户是否同意SDK隐私协议
/// since 3.1.0 开发者必须设置
BMFMapSDK
.
setAgreePrivacy
(
true
);
myLocPlugin
.
setAgreePrivacy
(
true
);
// 百度地图sdk初始化鉴权
if
(
Platform
.
isIOS
)
{
myLocPlugin
.
authAK
(
'rMsgMvYERM9zHDDdaipk34oBx7yoaGQh'
);
BMFMapSDK
.
setApiKeyAndCoordType
(
'rMsgMvYERM9zHDDdaipk34oBx7yoaGQh'
,
BMF_COORD_TYPE
.
BD09LL
);
}
else
if
(
Platform
.
isAndroid
)
{
// Android 目前不支持接口设置Apikey,
// 请在主工程的Manifest文件里设置,详细配置方法请参考官网(https://lbsyun.baidu.com/)demo
BMFMapSDK
.
setCoordType
(
BMF_COORD_TYPE
.
BD09LL
);
}
}
class
MyApp
extends
StatelessWidget
{
...
...
lib/poem/page/select_address_page.dart
View file @
27d5180
import
'dart:io'
;
import
'package:flutter/material.dart'
;
import
'package:Parlando/routers/fluro_navigator.dart'
;
import
'package:Parlando/util/toast_utils.dart'
;
import
'package:Parlando/widgets/my_button.dart'
;
import
'package:Parlando/widgets/search_bar.dart'
;
import
'package:flutter_baidu_mapapi_map/flutter_baidu_mapapi_map.dart'
;
import
'package:flutter_baidu_mapapi_base/flutter_baidu_mapapi_base.dart'
;
import
'../../map/flutter_2d_amap.dart'
;
import
'package:flutter_baidu_mapapi_map/flutter_baidu_mapapi_map.dart'
;
import
'package:flutter_bmflocation/flutter_bmflocation.dart'
;
import
'../../map/interface/amap_2d_controller.dart'
;
import
'../../map/poi_search_model.dart'
;
...
...
@@ -22,7 +23,9 @@ class AddressSelectPageState extends State<AddressSelectPage> {
int
_index
=
0
;
final
ScrollController
_controller
=
ScrollController
();
AMap2DController
?
_aMap2DController
;
late
BMFMapController
myMapController
;
late
BMFMapController
_myMapController
;
BaiduLocation
_loationResult
=
BaiduLocation
();
LocationFlutterPlugin
myLocPlugin
=
LocationFlutterPlugin
();
@override
void
dispose
()
{
...
...
@@ -33,27 +36,115 @@ class AddressSelectPageState extends State<AddressSelectPage> {
@override
void
initState
()
{
super
.
initState
();
// TODO 需要根据项目单独设置keys
Flutter2dAMap
.
setApiKey
(
iOSKey:
'd94fbf50f5bfa86cd4e793c9ed4a9a97'
,
);
myLocPlugin
.
setAgreePrivacy
(
true
);
// 百度地图sdk初始化鉴权
if
(
Platform
.
isIOS
)
{
myLocPlugin
.
authAK
(
'rMsgMvYERM9zHDDdaipk34oBx7yoaGQh'
);
BMFMapSDK
.
setApiKeyAndCoordType
(
'rMsgMvYERM9zHDDdaipk34oBx7yoaGQh'
,
BMF_COORD_TYPE
.
BD09LL
);
///接受定位回调
myLocPlugin
.
singleLocationCallback
(
callback:
(
BaiduLocation
result
)
{
setState
(()
{
_loationResult
=
result
;
locationFinish
();
});
});
}
else
if
(
Platform
.
isAndroid
)
{
// Android 目前不支持接口设置Apikey,
// 请在主工程的Manifest文件里设置,详细配置方法请参考官网(https://lbsyun.baidu.com/)demo
BMFMapSDK
.
setCoordType
(
BMF_COORD_TYPE
.
BD09LL
);
myLocPlugin
.
seriesLocationCallback
(
callback:
(
BaiduLocation
result
)
{
setState
(()
{
_loationResult
=
result
;
locationFinish
();
myLocPlugin
.
stopLocation
();
});
});
}
///设置定位参数
_locationAction
();
_startLocation
();
}
void
_locationAction
()
async
{
Map
iosMap
=
initIOSOptions
().
getMap
();
Map
androidMap
=
initAndroidOptions
().
getMap
();
await
myLocPlugin
.
prepareLoc
(
androidMap
,
iosMap
);
}
///定位完成添加mark
void
locationFinish
()
{
/// 创建BMFMarker
BMFMarker
marker
=
BMFMarker
.
icon
(
position:
BMFCoordinate
(
_loationResult
.
latitude
??
0.0
,
_loationResult
.
longitude
??
0.0
),
title:
'flutterMaker'
,
identifier:
'flutter_marker'
,
icon:
'assets/images/map/icon_mark.png'
);
print
(
_loationResult
.
latitude
.
toString
()
+
_loationResult
.
longitude
.
toString
());
/// 添加Marker
_myMapController
.
addMarker
(
marker
);
///设置中心点
_myMapController
.
setCenterCoordinate
(
BMFCoordinate
(
_loationResult
.
latitude
??
0.0
,
_loationResult
.
longitude
??
0.0
),
false
);
}
/// 设置地图参数
BaiduLocationAndroidOption
initAndroidOptions
()
{
BaiduLocationAndroidOption
options
=
BaiduLocationAndroidOption
(
coorType:
'bd09ll'
,
locationMode:
BMFLocationMode
.
hightAccuracy
,
isNeedAddress:
true
,
isNeedAltitude:
true
,
isNeedLocationPoiList:
true
,
isNeedNewVersionRgc:
true
,
isNeedLocationDescribe:
true
,
openGps:
true
,
locationPurpose:
BMFLocationPurpose
.
sport
,
coordType:
BMFLocationCoordType
.
bd09ll
);
return
options
;
}
BaiduLocationIOSOption
initIOSOptions
()
{
BaiduLocationIOSOption
options
=
BaiduLocationIOSOption
(
coordType:
BMFLocationCoordType
.
bd09ll
,
BMKLocationCoordinateType:
'BMKLocationCoordinateTypeBMK09LL'
,
desiredAccuracy:
BMFDesiredAccuracy
.
best
);
return
options
;
}
/// 启动定位
Future
<
void
>
_startLocation
()
async
{
if
(
Platform
.
isIOS
)
{
await
myLocPlugin
.
singleLocation
({
'isReGeocode'
:
true
,
'isNetworkState'
:
true
});
}
else
if
(
Platform
.
isAndroid
)
{
await
myLocPlugin
.
startLocation
();
}
}
/// 创建完成回调
void
onBMFMapCreated
(
BMFMapController
controller
)
{
myMapController
=
controller
;
_
myMapController
=
controller
;
/// 地图加载回调
myMapController
.
setMapDidLoadCallback
(
callback:
()
{
print
(
'mapDidLoad-地图加载完成'
);
});
_myMapController
.
setMapDidLoadCallback
(
callback:
()
{});
}
/// 设置地图参数
BMFMapOptions
initMapOptions
()
{
BMFMapOptions
mapOptions
=
BMFMapOptions
(
center:
BMFCoordinate
(
39.917215
,
116.380341
),
zoomLevel:
1
2
,
zoomLevel:
1
8
,
);
return
mapOptions
;
}
...
...
@@ -77,7 +168,9 @@ class AddressSelectPageState extends State<AddressSelectPage> {
Expanded
(
flex:
9
,
child:
BMFMapWidget
(
onBMFMapCreated:
onBMFMapCreated
,
onBMFMapCreated:
(
BMFMapController
controller
)
{
onBMFMapCreated
(
controller
);
},
mapOptions:
initMapOptions
(),
),
),
...
...
pubspec.lock
View file @
27d5180
...
...
@@ -405,6 +405,20 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.2.1"
flutter_baidu_mapapi_search:
dependency: "direct main"
description:
name: flutter_baidu_mapapi_search
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.2.0"
flutter_baidu_mapapi_utils:
dependency: "direct main"
description:
name: flutter_baidu_mapapi_utils
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.2.0"
flutter_blurhash:
dependency: transitive
description:
...
...
pubspec.yaml
View file @
27d5180
...
...
@@ -125,6 +125,8 @@ dependencies:
google_fonts
:
^3.0.1
wakelock
:
^0.6.1+2
flutter_baidu_mapapi_map
:
^3.2.1
flutter_baidu_mapapi_utils
:
^3.2.0
flutter_baidu_mapapi_search
:
^3.2.0
flutter_bmflocation
:
^3.2.0
dependency_overrides
:
...
...
@@ -209,6 +211,7 @@ flutter:
-
assets/images/category/
-
assets/images/membership/
-
assets/images/share/
-
assets/images/map/
-
assets/data/
-
assets/video/
-
assets/data/Data.json
...
...
Please
register
or
login
to post a comment