向Google Maps API发出GET请求返回错误请求400错误-javascript

向Google Maps API发出GET请求返回错误请求400错误-javascript,javascript,json,google-maps,http-status-code-400,get-request,Javascript,Json,Google Maps,Http Status Code 400,Get Request,您好:)我想在这篇文章的开头说,我是一个非常初级的开发人员,并且仍在努力了解如何使用os API 因此,我试图创建一个页面,允许用户在地图上放置标记,然后使用标记的纬度和经度向google maps API发出get请求,请求获取放置标记的城市名称,然后将城市名称放入地图旁边的面板中。但是,我的GET请求有问题,它在控制台中返回了400个错误请求 我想显示一个所有城市的标记被删除的列表,因此我试图在URL中使用插值,以便它可以用于所有的纬度和经度由删除的引脚返回。因此,我使用了以下urlhttp

您好:)我想在这篇文章的开头说,我是一个非常初级的开发人员,并且仍在努力了解如何使用os API

因此,我试图创建一个页面,允许用户在地图上放置标记,然后使用标记的纬度和经度向google maps API发出get请求,请求获取放置标记的城市名称,然后将城市名称放入地图旁边的面板中。但是,我的GET请求有问题,它在控制台中返回了400个错误请求

我想显示一个所有城市的标记被删除的列表,因此我试图在URL中使用插值,以便它可以用于所有的纬度和经度由删除的引脚返回。因此,我使用了以下url
https://maps.googleapis.com/maps/api/geocode/json?latlng=${findCityLng},${findCityLng}&sensor=true&key=MY_API_key
;(在我的代码中,我已经输入了实际的API密钥,但在本文中已将其取出)

我想知道如何修复URL,以便它仍然可以在任何lat和long上使用,而不必硬编码它们的值,然后它将返回JSON。我可以深入到获取城市名称中,而不是返回400错误。我已经谷歌搜索过了,但是没有关于使用插值来创建url以向其发出API请求的内容,也没有关于为什么对google maps API的get请求在发出get请求时会返回400错误的内容。我已经在谷歌上搜索了几个小时,阅读了谷歌地图API文档,但还没有找到/理解我需要什么

任何帮助都将不胜感激

这是我所有的代码(请注意,我必须删除我的API密钥,我不认为没有它的代码段将运行,但我不确定如何发布它!如果这不是正确的操作,请道歉):

console.log('helloworld');
让myPlaces=[];
让地图;
让我们找到三酰化;
让我们找到它;
initMap=函数(){
map=new google.maps.map(document.getElementById('map'){
中心:{lat:36.2048,lng:138.2529},
缩放:6.8
});
map.markerList=[];
map.addListener('click',addPlace);
const placesFromLocalStorage=JSON.parse(localStorage.getItem('myPlaces');
if(Array.isArray(placesFromLocalStorage)){
myPlaces=本地存储中的位置;
渲染器();
}
函数addPlace(事件){
推({
位置:event.latLng
});
console.log(myPlaces);
setItem('myPlaces',JSON.stringify(myPlaces));
渲染器();
}
函数getCity(){
对于(var i=0;i${info.result}`;
文件.正文.附件(p);
}
xhr.open('GET'`https://maps.googleapis.com/maps/api/geocode/json?latlng=${findCityLng},${findCityLng}&sensor=true&key=MY_API_key`);
xhr.send();//异步
};
window.onload=函数(){
设置超时(fetchCity,1500)
}
}
}
getCity();
函数renderMarkers(){
forEach(m=>m.setMap(null));
map.markerList=[];
myPlaces.forEach((place)=>{
const marker=new google.maps.marker({
位置:place.position,
地图:地图
});
地图。标记列表。推(标记);
});
}
}
initMap()
@导入url('https://fonts.googleapis.com/css?family=Quicksand');
* {
填充:0;
保证金:0;
框大小:边框框;
}
.主货柜{
利润率:15px;
显示器:flex;
}
.侧边栏{
边框:rgba(1011712360.56)实心3px;
字体大小:0.75em;
高度:50vh;
宽度:37vw;
保证金:自动;
文本对齐:居中;
字体系列:“流沙”,无衬线;
填充:2px;
}
#地图{
高度:50vh;
宽度:60vw;
保证金:自动;
}
.地球图标{
宽度:1米;
}

我最喜欢的地方
世界上我最喜欢的地方

在谷歌地图的请求中,您有这样一个错误:

谷歌地图JavaScript API错误:InvalidKeyMapError

在这里,您可以阅读有关该错误的信息

上面链接上的信息表明您需要生成一个新的api密钥

并将新生成的api添加到页面中,如下所示

  <script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"
  type="text/javascript"></script>

您正在向以下url发出请求:

`https://maps.googleapis.com/maps/api/geocode/json?latlng=${findCityLng},${findCityLng}&sensor=true&key=MY_API_KEY`
但是,此url包含两倍的经度,而不是包含纬度和经度

它应该更好地与以下方面合作:

`https://maps.googleapis.com/maps/api/geocode/json?latlng=${findCityLat},${findCityLng}&key=MY_API_KEY`
请注意:

  • 虽然不是错误的原因,但我删除了
    传感器
    参数,因为不再需要它(来源:)
  • 您可以(但不必)使用来自的反向地理代码。在幕后,它执行您正在执行的操作,调用地理代码http url,但由于您在javascript环境中工作,因此代码可能更简单

感谢您的回答-不过,我只是想确认一下,我确实有一个API密钥,并且一直在使用它(我只是从我上面发布的代码中取出来,因为谷歌现在向您收取一定数量的费用)