Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用谷歌地图距离矩阵API获取两个地址之间的旅行时间_Javascript_Google Maps_Reactjs_Google Maps Api 3_React Native - Fatal编程技术网

Javascript 使用谷歌地图距离矩阵API获取两个地址之间的旅行时间

Javascript 使用谷歌地图距离矩阵API获取两个地址之间的旅行时间,javascript,google-maps,reactjs,google-maps-api-3,react-native,Javascript,Google Maps,Reactjs,Google Maps Api 3,React Native,我正在建立一个例行程序,以获得两个地点之间的旅行时间使用 他们页面中的示例: 如果介于华盛顿特区和纽约市之间,则请求应如下所示: constructor(props) { // .. getDistance(); } “我的API密钥在这里” 如果我在chrome中像任何https调用一样调用上述内容,使用API密钥,它就可以正常工作 但是,当我使用任何其他地址时,我总是在我的应用程序中得到INAVLID\U请求,但在chrome中工作良好 : 无效的_请求:提供的请求无效。

我正在建立一个例行程序,以获得两个地点之间的旅行时间使用

他们页面中的示例:

如果介于华盛顿特区
和纽约市
之间,则请求应如下所示:

constructor(props) {
    // ..
    getDistance();

}
“我的API密钥在这里”

如果我在chrome中像任何https调用一样调用上述内容,使用API密钥,它就可以正常工作

但是,当我使用任何其他地址时,我总是在我的应用程序中得到INAVLID\U请求,但在chrome中工作良好

:

无效的_请求:提供的请求无效。这通常是由于缺少必填字段造成的。请参阅上面的“支持字段列表”

我的用法:

export async function getDistance()
{
    // get location of base
    const BaseLocation = "555 E Lafayette St, Detroit, MI 48226";

    // get locations of targets
    const TargetLocation = "21000 W 10 Mile Rd, Southfield, MI 48075";

    // prepare final API call
    let ApiURL = "https://maps.googleapis.com/maps/api/distancematrix/json?";
    let params = `origins=${BaseLocation}&destinations=${TargetLocation}&key=${GOOGLE_DISTANCES_API_KEY}`;  
    let finalApiURL = `${ApiURL}${encodeURI(params)}`;

    console.log("finalApiURL:\n");
    console.log(finalApiURL);

    // get duration/distance from base to each target
    try {
            let response =  await fetch(ApiURL);
            let responseJson = await response.json();
            console.log("responseJson:\n");
            console.log(responseJson);
        } catch(error) {
            console.error(error);
        } 
}
我从另一个类似这样的文件中调用它:

constructor(props) {
    // ..
    getDistance();

}
控制台中的结果(不工作-无效的\u请求):

如果我复制并粘贴
finalApiURL
并在Chrome中使用它,它就可以正常工作。结果:

{
   "destination_addresses" : [ "21000 W 10 Mile Rd, Southfield, MI 48075, USA" ],
   "origin_addresses" : [ "555 E Lafayette St, Detroit, MI 48226, USA" ],
   "rows" : [{
         "elements" : [{
               "distance" : {
                  "text" : "28.1 km",
                  "value" : 28073},
               "duration" : {
                  "text" : "23 mins",
                  "value" : 1367},
               "status" : "OK"}]}],
   "status" : "OK"
}

有什么问题吗?请并感谢

这只是一个打字错误,下面是正确的一行:

let response = await fetch(finalApiURL);

不是
apirl
,这个没有参数,因此无效,正如文档所说;)

我希望这能奏效。如果你没有等待支持,你可以试试这个

setTimeout(() => {
      let response = await fetch(finalApiURL);

          });

例如,如果使用
curl
访问该URL,是否也会出现相同的错误?我用自己的钥匙尝试了
curl-I$finalApiURL
,它对我很有效。很抱歉,我可能误读了一些内容(或者可能是在您编辑之前…不重要)。如果您将该URL粘贴到Chromes的地址栏,并且它可以工作,那么您就不需要使用
curl
(它只是一个命令行工具)进行测试。您与复制有一个共同点:您是从非浏览器程序访问API,但这不应该有什么区别。嗯…@HuguesMoreau是的,对不起,我想我在你的评论后添加了重复的部分。这确实很奇怪,我编辑并添加了我的确切用法,也许可以看看?async/wait与此有关吗?哈哈哈:我感觉有点不舒服。谢谢你,巴德!