#google-maps #flutter #flutter-layout
#google-карты #flutter #flutter-макет
Вопрос:
Мне нужно создать кнопку, которая будет показывать мне текущее местоположение пользователя. Вот почему я использую Карты Google, в которых есть такие опции, как эта. Но мне нужно настроить кнопку myLocation, но я не знаю, как это сделать. Не могли бы вы, пожалуйста, помочь мне с этим?
Хотя я довольно новичок во Flutter: D
Ответ №1:
Я не смог найти простой способ сделать это, но поскольку во flutter все является виджетом, вы можете поместить свои карты Google в свой стек и добавить 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;