Вход/Регистрация
JavaScript. Подробное руководство, 6-е издание
вернуться

Флэнаган Дэвид

Шрифт:

Броузеры с поддержкой интерфейса

Geolocation
определяют свойство
navigator.geolocation
. Это свойство ссылается на объект с тремя методами:

navigator.geolocation.getCurrentPosition

Запрашивает текущее географическое местонахождение пользователя.

navigator.geolocation.watchPosition

Не только запрашивает текущее местонахождение, но и продолжает следить за координатами, вызывая указанную функцию обратного вызова при изменении местонахождения пользователя.

navigator.geolocation.clearWatch

Останавливает слежение за местонахождением пользователя. В аргументе этому методу следует передавать число, возвращаемое соответствующим вызовом метода

watchPosition
.

В устройствах, включающих аппаратную поддержку GPS, имеется возможность определять местонахождение с высокой степенью точности с помощью устройства GPS. Однако чаще информация о местонахождении поступает из Всемирной паутины. Если броузер отправит ІР-адрес специализированной веб-службе, она в большинстве случаев сможет определить (на основе информации о поставщиках услуг Интернета), в каком городе находится пользователь (и рекламодатели часто пользуются этой возможностью, реализуя определение местонахождения на стороне сервера). Броузер часто в состоянии получить еще более точную информацию о местонахождении, запросив у операционной системы список ближайших беспроводных сетей и силы их сигналов. Затем эта информация отправляется веб-службе, которая позволяет вычислить местонахождение с большой точностью (обычно с точностью до микрорайона в городе).

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

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 для получения статического изображения карты

  • Читать дальше
  • 1
  • ...
  • 432
  • 433
  • 434
  • 435
  • 436
  • 437
  • 438
  • 439
  • 440
  • 441
  • 442
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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