Вот мой код:
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
class Home extends StatelessWidget {
final Completer<GoogleMapController> _controller = Completer();
static final CameraPosition _kGooglePlex = CameraPosition(
target: LatLng(37.42796133580664, -122.085749655962),
zoom: 14.4746,
);
@override
Widget build(BuildContext context) {
return Scaffold(
body: GoogleMap(
myLocationEnabled: true,
trafficEnabled: true,
initialCameraPosition: _kGooglePlex,
onMapCreated: (GoogleMapController controller) {
_controller.complete(controller);
_goToCurrentPosition();
},
),
);
}
Future<void> _goToCurrentPosition() async {
Position position = await Geolocator()
.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
final GoogleMapController controller = await _controller.future;
controller.animateCamera(CameraUpdate.newCameraPosition(CameraPosition(
target: LatLng(position.latitude, position.longitude),
zoom: 15,
)));
}
}
Мой _goToCurrentPosition
метод работает, но он невероятно медленный. После загрузки карты до go требуется несколько секунд. Как только карта загружается, я могу нажать включенную кнопку Google Maps, чтобы перейти к go к текущему местоположению, и он сразу же попадет туда. Есть ли в Google Maps встроенный метод, позволяющий сделать это программно, чтобы я мог центрировать карту относительно текущего местоположения пользователя как можно быстрее? Или даже если бы я мог получить текущее местоположение из Google Maps напрямую, а не через пакет Geolocation? Это похоже на функцию, которую используют многие приложения, поэтому я не уверен, почему я нигде не мог найти хорошее решение.