Для этого вы можете использовать API https://ipinfo.io (это мой сервис). Это бесплатно до 1000 запросов в день (с поддержкой 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"
}
Вот пример, который создает объект координат с ответом API, который соответствует тому, что вы получаете от getCurrentPosition()
:
$.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);
});
};
});
См. http://ipinfo.io/developers/replacing-navigator-geolocation-getcurrentposition для более подробной информации.
person
Ben Dowling
schedule
23.09.2016