代码之家  ›  专栏  ›  技术社区  ›  mvasco

Google Places显示地址列表,但地图未更新

  •  0
  • mvasco  · 技术社区  · 2 年前

    我试图实现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(),
    

    在这一点上,我得到了一个搜索框,在这里我可以输入一个地址和一张以我当前位置为中心的地图。

    当我在搜索框中输入地址时,会显示一个包含建议地址的列表。当我选择一个地址时,所选地址会被放入搜索框中,但地图不会更新。

    0 回复  |  直到 2 年前