0

我正在尝试在地理编码的回调函数中执行 setState 但不可能,所以我该如何执行

this.setState

在函数内部或等待函数直到完成并获得一些结果,以便将该信息设置为新状态。

onMarkerPositionChanged: (e,reloadList,marker) => {
      var geocoder = new window.google.maps.Geocoder();
      var myLatlng = new window.google.maps.LatLng(e.latLng.lat(),e.latLng.lng());
      var dragEndPositions;
      var nextMarkers
      let sitiosNew =[]

      sessionStorage.id = marker.id
      geocoder.geocode({'latLng': myLatlng }, function(results, status) {
        if (status == window.google.maps.GeocoderStatus.OK) {
        if (results[0]) {
          dragEndPositions = results[0].formatted_address;
          console.log(dragEndPositions)
          nextMarkers = [{
            position: myLatlng,
            nombre: dragEndPositions,
            icon : icon,
            direccion: dragEndPositions,
            latitud: e.latLng.lat(),
            longitud: e.latLng.lng(),
            id: sessionStorage.id
          }]
          if(sessionStorage.auto){
            JSON.parse(sessionStorage.auto).forEach(nextMarker => {
              if (nextMarker.id==nextMarkers.id) {
                sitiosNew.push(nextMarkers)
              }
              sitiosNew.push(nextMarker)
            })
          }
        if(sessionStorage.auto){
          sessionStorage.removeItem("auto")
        }
        sessionStorage.auto = JSON.stringify(sitiosNew)
        this.setState({
            markers: sitiosNew
          })
        reloadList()
        }
        }
        })

提前致谢!

4

0 回答 0