【发布时间】:2020-06-02 09:24:23
【问题描述】:
import React from "react";
import PlacesAutocomplete, {
geocodeByAddress,
getLatLng
} from "react-places-autocomplete";
import {db} from './Firebase';
import {useEffect} from 'react';
export default function Places() {
const [address, setAddress] = React.useState("");
const [coordinates, setCoordinates] = React.useState({
lat: null,
lng: null,
travelMode: "DRIVING"
});
const [destination, setDestinations] = React.useState([]);
let origins = [(coordinates.lat), (coordinates.lng)]
let travelMode = (coordinates.travelMode)
let destinations = destination.map(
position => {
return [(position.Latitude), (position.Longitude)]
}
)
useEffect(() => {
const unsub = db.collection('Location').onSnapshot (snapshot => {
const allPositions = snapshot.docs.map(doc => ({
id: doc.id,
... doc.data()
}));
setDestinations(allPositions);
})
return () => {
unsub();
};
}, [])
const handleSelect = async value => {
const results = await geocodeByAddress(value);
const latLng = await getLatLng(results[0]);
setAddress(value);
setCoordinates(latLng);
};
console.log (destinations)
return (
<div>
<PlacesAutocomplete
value={address}
onChange={setAddress}
onSelect={handleSelect}
>
{({ getInputProps, suggestions, getSuggestionItemProps, loading }) => (
<div>
<p>Latitude: {coordinates.lat}</p>
<p>Longitude: {coordinates.lng}</p>
<input {...getInputProps({ placeholder: "Type address" })} />
<div>
{loading ? <div>...loading</div> : null}
{suggestions.map(suggestion => {
const style = {
backgroundColor: suggestion.active ? "#41b6e6" : "#fff"
};
return (
<div {...getSuggestionItemProps(suggestion, { style })}>
{suggestion.description}
</div>
);
})}
</div>
</div>
)}
</PlacesAutocomplete>
</div>
);
}
我正在尝试计算一组坐标之间的距离,一对坐标是从坐标状态得到的,而其他坐标组是从目标状态得到的从数据库中获取。我已尝试将 React 库用于 Google 距离矩阵,但在控制台中出现 CORS 块错误。
【问题讨论】:
-
你能提供你得到的实际 CORS 错误吗?可能值得更新问题标题以反映您的实际问题。
-
访问在 'maps.googleapis.com/maps/api/distancematrix/… 从源 'localhost:3000' 获取已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。那是错误信息,我已经删除了 url 中的 api 键
标签: reactjs google-maps google-maps-api-3