Изначально у меня был код, который работал:navigator.geolocation и обратный вызов обратного вызова
function get_coords(callback) {
//If HTML5 Geolocation Is Supported In This Browser
if (navigator.geolocation)
{
//Use HTML5 Geolocation API To Get Current Position
navigator.geolocation.getCurrentPosition(function(position)
{
//Get Latitude From Geolocation API
var lat = position.coords.latitude;
//Get Longitude From Geolocation API
var lng = position.coords.longitude;
callback(["coords", lat, lng]);
},
function()
{
callback(["geoloc_deactivated"]);
});
}
else
{
callback(["geoloc_not_supported"]);
}
}
Тогда я хотел интегрировать решение этой страницы: http://jsfiddle.net/CvSW4/
А теперь мой код выглядит следующим образом и он больше не работает (теряется в функции обратного вызова):
function get_coords(callback)
{
//If HTML5 Geolocation Is Supported In This Browser
if (navigator.geolocation)
{
//~ //Use HTML5 Geolocation API To Get Current Position
navigator.geolocation.getCurrentPosition(
successCallback,
errorCallback_highAccuracy,
{maximumAge:600000, timeout:5000, enableHighAccuracy: true}
);
}
else
{
callback(["geoloc_not_supported"]);
}
}
function successCallback(position)
{
var lat = position.coords.latitude;
var lng = position.coords.longitude;
position(["coords", lat, lng]);
}
function errorCallback_highAccuracy(callback_high_accuracy)
{
if (error.code == error.TIMEOUT)
{
// Attempt to get GPS loc timed out after 5 seconds,
// try low accuracy location
navigator.geolocation.getCurrentPosition(
successCallback,
errorCallback_lowAccuracy,
{maximumAge:600000, timeout:10000, enableHighAccuracy: false});
return;
}
if (error.code == 1)
callback_high_accuracy(["perm_denied"])
else if (error.code == 2)
callback_high_accuracy(["pos_unavailable"])
}
function errorCallback_lowAccuracy(callback_low_accuracy)
{
if (error.code == 1)
callback_low_accuracy(["perm_denied"])
else if (error.code == 2)
callback_low_accuracy(["pos_unavailable"])
else if (error.code == 3)
callback_low_accuracy(["timeout"])
}
Я получаю ошибку:
Uncaught TypeError: object is not a functioncampaigns.min.js:37 successCallback
Линия:
position(["coords", lat, lng]);
Как сделать работу обратного вызова?
, потому что 'position' не является функцией, но это положение объекта, передаваемая на ваш обратный вызов ... разве вы не читали документацию «navigator.geolocation.getCurrentPosition»? –
Я голосую, чтобы закрыть этот вопрос как вне темы, потому что это было бы тривиально зафиксировано в «Рединг дружественное руководство». –
Я знаю, что получаю объект позиции. Но я не понимаю, как вернуть его в обратном вызове! :( – rom