В API 2.0 по ymaps.geolocation проблем нет, но в API 2.1 по IP (провайдер 'yandex') показывает неверные координаты, а режимы {provider: 'browser'} и {'provider: auto'} не работают (хотя 'auto' должен работать всегда?!). Но при этом всем navigator.geolocation браузера показывает верные координаты! Настройки геолокации браузера проверены. У коллег тоже самое.
Вот результат:
... старт:
определение по IP:[51.691219,81.11363]
определение по navigator.geolocation:[54.8625062,83.0897644]
ошибка определения по auto:"Not found"
ошибка определения по browser:"Not found"
Вот код:
function init() {
$('body').append('старт:' + '<br>')
ymaps.geolocation.get({
provider: 'yandex'
}).then(
function (result) {
var html = JSON.stringify(result.geoObjects.position);
$('body').append('определение по IP:' + html + '<br>')
},
function(err){
var html = JSON.stringify(err);
$('body').append('ошибка определения по IP:' + html + '<br>')
}
);
ymaps.geolocation.get({
provider: 'browser'
}).then(
function (result) {
var html = JSON.stringify(result.geoObjects.position);
$('body').append('определение по browser:' + html + '<br>')
},
function(err){
var html = JSON.stringify(err);
$('body').append('ошибка определения по browser:' + html + '<br>')
}
);
ymaps.geolocation.get({
provider: 'auto'
}).then(
function (result) {
var html = JSON.stringify(result.geoObjects.position);
$('body').append('определение по auto:' + html + '<br>')
},
function(err){
var html = JSON.stringify(err);
$('body').append('ошибка определения по auto:' + html + '<br>')
}
);
navigator.geolocation.getCurrentPosition(
function(result){
var crd = result.coords;
var html = '[' + crd.latitude + ',' + crd.longitude + ']';
$('body').append('определение по navigator.geolocation:' + html + '<br>')
},
function(err){
var html = JSON.stringify(err);
$('body').append('ошибка определения по navigator.geolocation:' + html + '<br>')
},
{}
);
}
ymaps.ready(init);
Куда копать? Не хотелось бы делать navigator.geolocation -> геокодирование по полученным координатам