如何在Google地图上自定义myLocationEnabled按钮?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Google地图上自定义myLocationEnabled按钮?相关的知识,希望对你有一定的参考价值。

我需要创建一个按钮,向我显示用户的当前位置。这就是为什么我使用谷歌地图,它有这样的选项。但是,我需要自定义MyLocation按钮但不知道如何操作。你能帮帮我吗?

我在Flutter中很新:D

答案

我找不到简单的方法,但由于一切都是颤抖的小部件,你可以将你的谷歌地图放在你的堆栈中,并添加iconbutton或你需要的任何自定义按钮到你的堆栈。

GoogleMap(
                      onMapCreated: _onMapCreated,
                      initialCameraPosition:
                          CameraPosition(target: LatLng(0.0, 0.0)),
                      markers: markers,
                    ),
                    IconButton(
                      icon: Icon(Icons.battery_charging_full),
                      onPressed: () async {
                        final center = await getUserLocation();
                        getNearbyPlaces(center);
                        Marker myPosition = Marker(
                            markerId: MarkerId('myLocation'),
                            position: center == null
                                ? LatLng(0, 0)
                                : LatLng(center.latitude, center.longitude),
                            icon: BitmapDescriptor.fromAsset(
                                'assets/logo.png'));
                        setState(() {
                          markers.add(myPosition);
                        });
                      },
                    ),
                  ],
                )

所以我在这里做的基本上是,

我有Stack帮我把IconButton放在GoogleMap上。当用户按下该按钮时,我添加了一个新的Marker来显示当前位置,我的Set上有一个Markers State,名为markers,我通过获取用户的当前位置并添加自定义来创建新的Marker该标记的图标,然后将其添加到我的标记(设置),以在GoogleMap上显示。

我的getUserLocation函数:

  Future<LatLng> getUserLocation() async {
    LocationManager.LocationData currentLocation;
    final location = LocationManager.Location();
    try {
      currentLocation = await location.getLocation();
      final lat = currentLocation.latitude;
      final lng = currentLocation.longitude;
      final center = LatLng(lat, lng);
      return center;
    } on Exception {
      currentLocation = null;
      return null;
    }
  }

我有location: ^2.1.0包并将其用作LocationManager import 'package:location/location.dart' as LocationManager;

以上是关于如何在Google地图上自定义myLocationEnabled按钮?的主要内容,如果未能解决你的问题,请参考以下文章

Android Google Maps v2 - 为 myLocation 设置缩放级别

如何在 Android 中的 onMapReady() 之外添加 Google 地图标记?

google_maps_flutter - 自定义标记图标:无法启用 MyLocation 图层,因为未授予位置权限

如何在启用 MyLocation 的情况下使用 moveCamera 时忽略 GPS 位置更改

地图上自定义标记点和轨迹线的实现

php 修复WordPress网站上自定义徽标的Google Schema错误。