Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

Эти технологии определения географического местонахождения связаны либо с обменом данными по сети, либо с взаимодействием с несколькими спутниками, поэтому прикладной интерфейс объекта

Geolocation
является асинхронным: методы
getCurrentPosition
и
watchPosition
возвращают управление немедленно, но они принимают функцию, которая будет вызвана броузером, когда он определит местонахождение пользователя (или когда местонахождение изменится). В простейшем случае запрос местонахождения выглядит так:

navigator.geolocation.getCurrentPosition(function(pos) {

var latitude = pos.coords.latitude;

var longitude = pos.coords.longitude;

alert("Ваши
координаты: " + latitude + ", + longitude);

});

В дополнение к широте и долготе в ответ на каждый успешный запрос возвращается также значение (в метрах), указывающее точность определения местонахождения. Пример 22.1 демонстрирует получение информации о местонахождении: он вызывает метод

getCurrentPosition,
чтобы определить текущее местонахождение, и использует полученную информацию для отображения карты (полученной от службы Google Maps) текущего местонахождения в масштабе, примерно соответствующем точности определения местонахождения.

Пример 22.1. Использование информации о местонахождении для отображения карты

// Возвращает вновь созданный элемент <img>, настроенный (в случае успешного

// определения местонахождения) на отображение карты для текущего местонахождения.

// Обратите внимание, что вызывающая программа сама должна вставить возвращаемый

// элемент в документ, чтобы отобразить его. Возбуждает исключение, если возможность

// определения местонахождения не поддерживается броузером,

function getmap {

// Проверить поддержку объекта geolocation

if (!navigator.geolocation)

throw "Определение местонахождения не поддерживается";

// Создать новый элемент <img>, отправить запрос определения местонахождения,

// чтобы в img отобразить карту местонахождения и вернуть изображение,

var image = document.createElement("img");

navigator.geolocation.getCurrentPosition(setMapURL);

return image;

// Эта функция будет вызвана после того, как
вызывающая программа получит объект

// изображения, в случае успешного выполнения запроса определения местонахождения,

function setMapURL(pos) {

// Получить информацию о местонахождении из объекта аргумента

var latitude = pos.coords.latitude; // Градусы к северу от экватора

var longitude = pos.coords.longitude; // Градусы к востоку от Гринвича

var accuracy = pos.coords.accuracy; // Метры

// Сконструировать URL для получения статического изображения карты

// от службы Google Мар для этого местонахождения

var url = " http://maps.google.com/maps/api/staticmap " +

"?center=" + latitude + + longitude +

"&size=640x640&sensor=t rue";

// Установить масштаб карты, используя грубое приближение

var zoomlevel=20; // Для начала установить самый крупный масштаб

if (accuracy > 80) // Уменьшить масштаб для низкой точности

zoomlevel -= Math.round(Math.log(accuracy/50)/Math.LN2);

url += "&zoom=" + zoomlevel; // Добавить масштаб в URL

// Отобразить карту в объекте изображения. Спасибо, Google!

image.src = url;

}

}

Прикладной интерфейс Geolocation обладает несколькими особенностями, которые не были продемонстрированы в примере 22.1:

• В дополнение к первому аргументу с функцией обратного вызова методы getCurrentPosition и watchPosition принимают вторую необязательную функцию, которая будет вызвана в случае неудачного выполнения запроса.

• Помимо функций обработчиков успешного и неудачного выполнения запроса эти два метода принимают в третьем необязательном аргументе объект с параметрами. Свойства этого объекта определяют: желательна ли высокая точность определения местонахождения, насколько «устаревшей» может быть информация о местонахождении и предельное время ожидания определения местонахождения.

• Объект, который передается обработчику в случае успешного выполнения запроса, также включает время и может (на некоторых устройствах) содержать дополнительную информацию, такую как высота над уровнем моря, скорость и направление перемещения.

Поделиться:
Популярные книги

Последний Герой. Том 1

Дамиров Рафаэль
1. Последний герой
Фантастика:
попаданцы
альтернативная история
фантастика: прочее
5.00
рейтинг книги
Последний Герой. Том 1

Я до сих пор царь. Книга XXXII

Дрейк Сириус
32. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я до сих пор царь. Книга XXXII

Жена неверного генерала, или Попаданка на отборе

Удалова Юлия
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Жена неверного генерала, или Попаданка на отборе

Неучтенный элемент. Том 1

NikL
1. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 1

Законы Рода. Том 5

Мельник Андрей
5. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 5

Кодекс Охотника. Книга VIII

Винокуров Юрий
8. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VIII

Эпоха Опустошителя. Том VII

Павлов Вел
7. Вечное Ристалище
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Эпоха Опустошителя. Том VII

Хозяин Теней 5

Петров Максим Николаевич
5. Безбожник
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Хозяин Теней 5

Последний Паладин. Том 13

Саваровский Роман
13. Путь Паладина
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 13

Распутье

Басаргин Иван Ульянович
Сибириада
Проза:
военная проза
историческая проза
5.00
рейтинг книги
Распутье

Последний Паладин. Том 14

Саваровский Роман
14. Путь Паладина
Фантастика:
аниме
фэнтези
попаданцы
5.75
рейтинг книги
Последний Паладин. Том 14

Матабар IV

Клеванский Кирилл Сергеевич
4. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Матабар IV

Наследие Маозари 9

Панежин Евгений
9. Наследие Маозари
Фантастика:
попаданцы
постапокалипсис
рпг
сказочная фантастика
6.25
рейтинг книги
Наследие Маозари 9

Ну, здравствуй, Герой!

Француз Михаил
2. Здравствуй, Мир!
Фантастика:
фэнтези
рпг
попаданцы
5.00
рейтинг книги
Ну, здравствуй, Герой!