首先,我知道此post存在。我需要一个免费的(或非常便宜的)解决方案,所以我再次问这个问题。
在不安全的来源上不赞成使用getCurrentPosition()和watchPosition()。要使用此功能,应考虑将应用程序切换到安全来源,例如HTTPS。
Chrome浏览器不允许未使用SSL的网站使用getCurrentPosition()。
Google Maps API可以解决此问题,但其usage limits太低了。 (我们管理的新闻门户每天的页面浏览量超过40万)。
有谁知道getCurrentPosition()的任何免费(或非常便宜)的替代品吗?
最佳答案
您可以为此使用https://ipinfo.io API(这是我的服务)。它是免费的,每天最多提供1,000个请求(带有或不带有SSL支持)。它为您提供坐标,名称等。这是一个例子:
curl ipinfo.io
{
"ip": "172.56.39.47",
"hostname": "No Hostname",
"city": "Oakland",
"region": "California",
"country": "US",
"loc": "37.7350,-122.2088",
"org": "AS21928 T-Mobile USA, Inc.",
"postal": "94621"
}
这是一个示例,该示例使用与您从
getCurrentPosition()
获得的内容相匹配的API响应构造一个coords对象:$.getJSON('https://ipinfo.io/geo', function(response) {
var loc = response.loc.split(',');
var coords = {
latitude: loc[0],
longitude: loc[1]
};
});
这是一个详细的示例,显示了如何将其用作
getCurrentPosition()
的后备:function do_something(coords) {
// Do something with the coords here
}
navigator.geolocation.getCurrentPosition(function(position) {
do_something(position.coords);
},
function(failure) {
$.getJSON('https://ipinfo.io/geo', function(response) {
var loc = response.loc.split(',');
var coords = {
latitude: loc[0],
longitude: loc[1]
};
do_something(coords);
});
};
});
关于javascript - 没有SSL的网站的getCurrentPosition()的免费替代品?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38909338/