1

車両追跡用のアプリを作成しています。Google Maps API の助けを借りて、道順を取得し、必要な情報をすべて抽出することができます。この問題は、Elevations API 応答で発生しました。DirectionRender クラスから、パスと距離を小道具として送信しています。GM 標高リクエストは、elevator.getElevationAlongPath(option,PlotElevation) を介して行われます。PlotElevation (elevations,status) はコールバック関数です。ただし、どのように応答を 1 つだけ受信しようとしても (useMemo、useEffect を使用して、すべてを試したと思います)、応答の再レンダリングに問題があります。OVER_QUERY_LIMIT または無限の再レンダリング。誰かがそれを手伝ってくれますか?ありがとう

const Elevation = React.memo(props =>{

const [path, setPath] = useState({...props.path})
const [distance, setDistance]=useState({...props.distance})  
const [elevationArray, setElevationArray] = useState(null)
const [stop, setStop] = useState(false)

let pathElev = JSON.parse(JSON.stringify(path))

React.useEffect(() => {
    setPath(props.path)
}, [props.path])
React.useEffect(() => {
    setDistance(props.distance)
}, [props.distance])


let elevator = new window.google.maps.ElevationService;
let numberSamples = parseInt( distance/40)

let options = {
    'path':path,
    'samples':numberSamples 
}

//The problem starts here
const  PlotElevation  = (elevations, status) => {
    if (stop === false){
        console.log('status',status)             
        console.log(JSON.parse(JSON.stringify(elevations)))
        setElevationArray(elevations)  
        //setStop(true)
        console.log(elevations[19].elevation)    
        return         
    }
} 
const Memo = React.useMemo(
    ()=>{
    elevator.getElevationAlongPath(
        options,PlotElevation                
        )
},[elevator.getElevationAlongPath(
    options,PlotElevation                
    )])

// elevator.getElevationAlongPath(
//     {
//       path: path,
//       samples: 100
//     },  elevations =>{      
//       setElevationArray({            
//         // We’ll probably want to massage the data shape later:
//        // elevationArray: elevations
//       })
//     }
//   ) 
return (
    <div>
        {Memo}
        {console.log('path is received ', pathElev)}
        {console.log('number of samples', numberSamples)}    
        {console.log('elevation check ',elevationArray)}
                              
        {/* {elevator.getElevationAlongPath(
        options,PlotElevation)} */}
           
         
    </div>
)

}))

デフォルトの標高をエクスポート

4

0 に答える 0