車両追跡用のアプリを作成しています。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>
)
}))
デフォルトの標高をエクスポート