В части else
функции handleNoGeolocation
вы предоставляете свой запасной код, указывающий местоположение по умолчанию или другое средство определения местоположения.
Вот альтернативная структура для функций, которая немного суше и использует геолокацию IP-адресов Google для отступления:
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(updatePosition, ipPosition, { options... });
} else {
ipPosition();
}
function ipPosition() {
updatePosition(google.loader.ClientLocation);
}
function updatePosition(position) {
if (position == null) {
return updatePosition(defaultPlace());
}
// Firefox 3.6 passes in a non-standard position object with lat/lng at the top level instead of in .coords
var coords = (position.hasOwnProperty("coords")) ? position.coords : position;
if (coords == null) {
return updatePosition(defaultPlace());
}
[...]
}