我试图实现Places API,从列表中选择地址,并在选择地址时在地图上放置一个标记。
这是我的密码:
_geolocalizar ?SearchLocation(
placeholder: "escribredirtarea".tr(),
placeType: PlaceType.address,
onClearIconPress: () {
_markers.clear();
_controllerDireccion.text = "";
_controllerLatitud.text = "";
_controllerLongitud.text = "";
},
country: 'ES',
language: 'es',
apiKey: '...',
onSelected: (Place place) async {
FetchGeocoder fetchGeocoder =
await Geocoder2.getCoordinatesFromAddress(
address: place.description,
googleMapApiKey:
"...");
var first = fetchGeocoder.results.first;
print("direccion buscada ${place.description}");
var lat = first.geometry.location.lat;
var lng = first.geometry.location.lng;
LatLng sitio = LatLng(lat, lng);
setState(() {
_mostrarmapa = true;
_mostrarlatitud = true;
_mostrarlongitud = true;
_mostraredificiotarea = true;
_controllerDireccion.text = place.description;
_controllerLatitud.text = lat.toString();
_controllerLongitud.text = lng.toString();
_markers.add(Marker(
markerId: MarkerId('SomeId'),
position: LatLng(sitio.latitude, sitio.longitude),
infoWindow:
InfoWindow(title: '${_controllerDireccion.text}')));
});
// Will animate the GoogleMap camera, taking us to the selected position with an appropriate zoom
await mapController
.animateCamera(CameraUpdate.newLatLng(sitio));
},
):Container(),
//texto direccion aviso
_mostrardireccion ? Padding(
padding: const EdgeInsets.all(8.0),
child: TextField(
decoration: InputDecoration(
hintStyle: TextStyle(fontSize: 17),
hintText: 'geotarea'.tr(),
),
onChanged: (value) {
if (value != _direccion) {}
},
controller: _controllerDireccion,
style: TextStyle(
backgroundColor: Colors.white,
),
),
):Container(),
SizedBox(height: 20,),
//google map
(applicationBloc.currentLocation == null)
? Container(
height: 300,
width: 30,
child: Container(),
)
: _geolocalizar?Container(
height: 300,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: GoogleMap(
onMapCreated:
(GoogleMapController googleMapController) {
setState(() {
mapController = googleMapController;
});
},
markers: Set<Marker>.of(_markers),
mapType: MapType.normal,
myLocationEnabled: true,
initialCameraPosition: CameraPosition(
target: LatLng(
applicationBloc.currentLocation!.latitude,
applicationBloc.currentLocation!.longitude),
zoom: 14),
),
),
):Container(),
在这一点上,我得到了一个搜索框,在这里我可以输入一个地址和一张以我当前位置为中心的地图。
当我在搜索框中输入地址时,会显示一个包含建议地址的列表。当我选择一个地址时,所选地址会被放入搜索框中,但地图不会更新。