我首先使用此代码来获取我的地理位置:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
long = position.coords.longitude;
lat = position.coords.latitude;
$("#data").html("latitude: " + lat + "<br>longitude: " + long);
});
}
然后我使用地理位置调用 API:
var api = "http://api.openweathermap.org/data/2.5/weather?lat={+lat+}&lon={+long+}&appid=a85717f57b6bd30e011747de59dc3a60"
它返回代码错误 400,错误请求。
我认为问题是您没有将变量 lat 和 long 正确连接到 URL 中。 使用" + lat + "
而不是像这样{+lat+}
:var api = "http://api.openweathermap.org/data/2.5/weather?lat=" +lat+ "&lon=" +long+ "&appid=a85717f57b6bd30e011747de59dc3a60";
对我有用。
另一个潜在的问题可能是范围;如果你的var api
在if语句之外,它就不知道lat and long
变量是什么。 解决此问题的一种方法是全局声明这些变量(在 if 语句之外)。 或者将var api
移到语句内。