пятница, 7 мая 2010 г.

Определяем геокоординаты с помощью javascript

Продолжаем развлекаться с программированием под мобильные платформы. Сегодня покажу два способа, как определить координаты с помощью javascript из вашего мобильного устройства (для немобильных показанные ниже способы так же работают). Итак, поехали.






С помощью возможностей HTML5


Итак, снова великий и могучий HTML5 протягивает нам руку помощи. Делаем все поэтапно.
Сначала определим, поддерживается ли данный функционал текущим браузером:



function checkGeoLocation() {
    return navigator.geolocation;
}

Затем пишем метод обновления позиции (пример функции fn будет ниже):



var callback;
function updateLocation(fn) {
    if (checkGeoLocation()){
        callback = fn;
        navigator.geolocation.getCurrentPosition(savePosition);
        return true;
    } else {
        console.log('Device not capable of geo-location.');
        fn(false);
        return false;
    }                }


Теперь нам нужно вызвать сами функции записи координат в локальные переменные:



var latitude, longitude;
function savePosition(position) {
    latitude = position.coords.latitude;
    longitude = position.coords.longitude;
    if (callback) {
        callback(getLocation());
    }
}
function getLocation() {
    if (latitude && longitude) {
        return {
            latitude: latitude,
            longitude: longitude
        }
    } else {
        console.log('No location available.Try calling updateLocation() first.');
        return false;
    }
}


Теперь достаточно просто вызвать из кода нужную функцию



updateLocation(function(coords) {
    if (coords) {
        alert('Latitude: ' + coords.latitude + 
        '<br />Longitude: ' + coords.longitude);
    } else {
        alert('Device not capable of geo-location.');
    }});




С помощью возможностей Google Gears


Если предыдущий способ нам не подошел, то помочь нам может не менее великий и могучий Google со своим Gears.
Чтобы воспользоваться данным способом необходимо перейти на страницу проекта geo-location-javascript и скачать оттуда их скрипт. Далее в коде сделать вставку их скрипта и скрипта Google gears:



<script type="text/javascript" charset="utf-8" src="geo.js">
</script>
<script type="text/javascript" charset="utf-8" 
src="http://code.google.com/apis/gears/gears_init.js" >
</script>

В самом коде вызов методов получения координат будет следующим:



function success_callback(p) {
    alert( p.coords.latitude.toFixed(2) + " "+ p.coords.longitude.toFixed(2));
}
function error_callback(p) {
    alert('error=' + p.message);
}
function init() {
    if (geo_position_js.init()) {
        geo_position_js.getCurrentPosition(success_callback,
error_callback, {enableHighAccuracy:true});
    }else {
        alert("Functionality not available");
    }
}


Profit!

Related Posts by Categories



Комментариев нет:

Отправить комментарий