我想通过javascript中的Google Maps Geolocation api根据MAC地址获取物理位置(纬度和经度)。
根据谷歌地图API的文档,对于地理位置,信息必须采用json格式,https://developers.google.com/maps/documentation/geolocation/intro#body 请求到给定的网址,它以json https://developers.google.com/maps/documentation/geolocation/intro#responses
我尝试过这段javascript代码:
xhr = new XMLHttpRequest();
var url = "https://www.googleapis.com/geolocation/v1/geolocate?key=MY_API_KEY";
xhr.open("POST", url, true);
xhr.setRequestHeader("Content-type", "application/json");
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var json = JSON.parse(xhr.responseText);
console.log(json.location.lat+","+json.location.lng+","+json.accuracy);
}
}
var data = JSON.stringify({
"wifiAccessPoints": [
{
"macAddress": "MY_MAC_ADDRESS"
},
{
"macAddress": "MY_MAC_ADDRESS"
}
]
});
xhr.send(data);
但是我在控制台中收到以下错误
POST https://www.googleapis.com/geolocation/v1/geolocate?key=MY_API_KEY 403()
代码有什么问题吗?还是有其他更好的方法?
注意:您可能会问为什么不简单地使用navigator.geolocation
?好吧,因为我正在构建项目的系统不支持HTML5地理位置API。
基于文档得到的错误 (403) 是 dailyLimitExceeded 或 userRateLimitExceeded。原因是您已超出在 Google 开发者控制台中配置的每位用户每秒请求数限制。应配置此限制,以防止单个或一小组用户用尽每日配额,同时仍允许所有用户进行合理的访问。
如需详细了解以及如何查看您在 Google 开发者控制台中使用的使用情况或配额,请遵循此页面上的指南。