如何使用 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 更改为当前位置? 我希望在开始时显示用户的位置

我目前正在使用 geolocatorgoogle_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 中标记的左侧或右侧

如何使用 Ionic 4 在 IOS 上修复“cordova-plugin-googlemaps 尚未安装或准备就绪”

如何使用 GoogleMaps sdk 获取路线图的中心

如何使用 .geocomplete 减少对 GoogleMaps API 的请求数量