#flutter #google-maps #maps
Вопрос:
В своем приложении я создал очень простой экран Google maps, где я использовал ключ API и настроенное местоположение для отображения карты на экране с нужными мне координатами.
Я также разместил текстовое поле, чтобы пользователь мог вставить местоположение для отображения на карте.
Вот где я сталкиваюсь с проблемами, кто-нибудь знает, как добиться автозаполнения этого местоположения с помощью flutter?
Есть ли посылка? Если да, то какой из них, пожалуйста.
Это то, чего я достиг до сих пор:
class _GoogleMapScreenState extends State<GoogleMapScreen> {
Set<Marker> markers = {};
late BitmapDescriptor mapMarker;
late GoogleMapController googleMapController;
@override
void dispose() {
googleMapController.dispose();
super.dispose();
}
@override
void initState() {
super.initState();
setCustomMarker();
}
void setCustomMarker() async {
//mapMarker = await BitmapDescriptor.fromAssetImage(ImageConfiguration(), 'assets/img/location.png',);
mapMarker =
await getBitmapDescriptorFromAssetBytes('assets/img/icon2.png', 35);
}
/// Marker size
Future<Uint8List> getBytesFromAsset(String path, int width) async {
var data = await rootBundle.load(path);
var codec = await ui.instantiateImageCodec(data.buffer.asUint8List(),
targetWidth: width);
var fi = await codec.getNextFrame();
return (await fi.image.toByteData(format: ui.ImageByteFormat.png))
?.buffer
.asUint8List() ??
Uint8List.fromList([]);
}
Future<BitmapDescriptor> getBitmapDescriptorFromAssetBytes(
String path, int width) async {
var imageData = await getBytesFromAsset(path, width);
return BitmapDescriptor.fromBytes(imageData);
}
void onMapCreated(GoogleMapController controller) {
setState(() {
markers.add(
Marker(
markerId: MarkerId('theBase1'),
position: LatLng(52.5722702, 13.4039918),
icon: mapMarker,
infoWindow: InfoWindow(
title: 'The Base 1',
snippet: 'Main Building',
),
),
);
});
}
@override
Widget build(BuildContext context) {
var width = MediaQuery.of(context).size.width;
var height = MediaQuery.of(context).size.height;
return Scaffold(
body: NestedScrollView(
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return <Widget>[
MainScreenAppBar(
flavorSettings: context.flavorSettings,
centerTitle: true,
title: 'Choose Location',
showBack: true,
backgroundColor: context.themeSettings.background),
];
},
body: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Container(
decoration: BoxDecoration(
border: Border.all(),
borderRadius: BorderRadius.circular(5),
),
width: width *0.90,
height: height * 0.05,
child: Row(
children: [
SizedBox(width: 10),
Icon(Icons.add_location),
SizedBox(width: 10),
TextField(),
],
),
),
Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.white,
),
borderRadius: BorderRadius.circular(10),
),
width: width * 0.90,
height: height / 2,
child: GoogleMap(
myLocationButtonEnabled: false,
zoomControlsEnabled: false,
onMapCreated: onMapCreated,
markers: markers,
initialCameraPosition: CameraPosition(
target: LatLng(52.5722702, 13.4039918),
zoom: 15,
),
),
),
],
),
),
);
}
}
Комментарии:
1. Вы уже видели этот пакет: pub.dev/пакеты/flutter_google_places ? Если нет, вы можете попробовать это