如何使用 GoogleMaps 在 PlacePicker 中将当前位置设置为 initialPosition - Flutter
Posted
技术标签:
【中文标题】如何使用 GoogleMaps 在 PlacePicker 中将当前位置设置为 initialPosition - Flutter【英文标题】:How to set current location as initialPosition in PlacePicker with GoogleMaps - Flutter 【发布时间】:2021-10-31 21:22:58 【问题描述】:如何将 PickerPlace 中的 initialPosition 更改为当前位置? 我希望在开始时显示用户的位置
我目前正在使用 geolocator、google_maps_flutter
我必须在 initialPosition 中给出 currentPosition 但我不知道如何 将当前位置添加到初始位置。
还有其他方法吗? 非常感谢每一个可能的帮助。
class SosScreen extends StatefulWidget
const SosScreen(Key? key) : super(key: key);
static final kInitialPosition = LatLng(50.04119, 18.4646689);
@override
_SosScreenState createState() => _SosScreenState();
static Route route()
return MaterialPageRoute<void>(builder: (_) => SosScreen());
class _SosScreenState extends State<SosScreen>
PickResult? selectedPlace;
@override
Widget build(BuildContext context)
return Scaffold(
body: _mapAlert(context),
);
String _locationMessage = '';
void getCurrentLocation() async
final position = await Geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.high);
print(position);
setState(()
_locationMessage = "$position.latitude,$position.longitude";
);
Widget _mapAlert(BuildContext context)
return Center(
child: Container(
height: 500,
width: 500,
decoration: BoxDecoration(
color: Colors.white,
border: Border.all(color: Colors.orangeAccent, width: 2),
borderRadius: BorderRadius.all(Radius.circular(5)),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3), // changes position of shadow
),
],
),
child: PlacePicker(
apiKey: '',
initialPosition: SosScreen.kInitialPosition,
useCurrentLocation: true,
selectInitialPosition: true,
usePlaceDetailSearch: true,
onPlacePicked: (result)
selectedPlace = result;
Navigator.of(context).pop();
setState(() );
,
forceSearchOnZoomChanged: true,
pinBuilder: (context, state)
if (state == PinState.Idle)
return Icon(Icons.favorite, color: Colors.orange);
// Image(
// image: AssetImage(
// 'assets/images/orange_small_logo.png',
// ),
// height: 50,
// width: 20,
// );
else
return Icon(
Icons.favorite_border,
color: Colors.orange,
);
,
)));
【问题讨论】:
【参考方案1】:static final kInitialPosition = LatLng(50.04119, 18.4646689);
//Remove static keyword.
void getCurrentLocation() async
position = await Geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.high);
print(position);
setState(()
_lofinalcationMessage = "$position.latitude,$position.longitude";
SosScreen.kInitialPosition = position;
);
【讨论】:
以上是关于如何使用 GoogleMaps 在 PlacePicker 中将当前位置设置为 initialPosition - Flutter的主要内容,如果未能解决你的问题,请参考以下文章
如何在 GoogleMaps for iOS 中使用自定义标记进行标记聚类?
如何使用 Xamarin.Forms.Maps(无 Xamarin.Forms.GoogleMaps)在地图中应用样式或更改颜色
如何使用 Android Studio 将信息窗口放置在 GoogleMaps 中标记的左侧或右侧