Шветанк Диксит · 16 июня 2010 г.
Представьте себе первую поездку в незнакомый город. Вы голодны, но не знаете, где находится ближайший ресторан, и какой из них хороший. Не правда ли будет удобно, если какое-то приложение сможет определить ваше местоположение и предоставить список ближайших ресторанов, каждый вместе с рецензией и рейтингом?
И это не единственное соображение – сможет ли оно точно определить ваше местоположение, помня также о вашей приватности? Здесь на помощь приходит API геолокации консорциума W3C, поддержка которого включена в Opera 10.60.
Под "Геолокацией" мы понимаем использование в браузере сценариев для определения, где находится определенный пользователь. Это будет иметь бесчисленные выгоды в приложениях Web и является привлекательным свойством браузеров. Например, можно создать слyжбу Web для предоставления информации о ближайшей больнице или с пошаговым навигационным маршрутом. Или как насчет приложения, которое сообщает обо всех интересных событиях, происходящих в вашей области в ближайшие дни с указанием точного местоположения? Вы взволнованы? Читайте дальше!
Люди пытались определить местоположение пользователя в Web достаточно давно. Однако большинство старых методов недостаточно точны, и не следят за разрешением пользователя для доступа к этой информации. API геолокации консорциума W3C определен для предоставления разработчикам унифицированного способа создания приложений Web, использующих информацию о местоположении. Он значительно более точен и создан таким образом, что пользователь может контролировать, может ли информация о его местоположении быть доступна на данном сайте или нет.
В браузерах, которые поддерживают геолокацию, местоположения пользователя определяются на основе комбинации данных о точках доступа
(рис 11.1) Браузер предупреждает пользователя, что приложение пытается получить доступ к данным местоположения через API геолокации, и запрашивает разрешения на получение доступа
При обращении к странице, которая содержит код геолокации, появится небольшое уведомление вверху страницы, спрашивающее, хотите ли вы предоставить приложению информацию о местоположении или нет (см. рисунок 11.1). Если вы согласны, то информация будет предоставлена; можно также выбрать "запомнить мой выбор для этого сайта", чтобы в будущем больше не задавать этот вопрос, и приложение автоматически использовало бы сделанный в первый раз выбор. Аналогично можно блокировать информацию местоположения, предоставляя пользователю индивидуальный выбор в отношении приватности.
Использовать API геолокации очень просто. Прежде всего, необходимо определить, что браузер пользователя действительно поддерживает геолокацию. Это можно сделать с помощью JavaScript, чтобы запросить браузер и проверить, что он поддерживает свойство navigator.. Для однократного определения местоположения пользователя, можно использовать функцию navigator., которая, в случае успеха, вызовет выбранную функцию обратного вызова.
Можно сделать это следующим образом:
//Проверяем, что браузер поддерживает W3C Geolocation API
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
} else {
alert('Похоже, что Geolocation, которая требуется для этой страницы, не включена в браузере.
Пожалуйста, воспользуйтесь браузером, который ее поддерживает.');
}
В
Затем добавляется функция для успешного определения расположения:
function successFunction(position) {
var lat = position.coords.latitude;
var mylong = position.coords.longitude;
alert('Ваша широта:'+lat+' и долгота '+mylong);
}
Можно написать функцию обработки ошибки любым образом. Обратитесь к интерфейсу PositionError (http://dev.w3.org/geo/api/spec-source.html#position_error_interface) в спецификации за дополнительной информацией о кодах ошибки. Для примера мы сохраним ее простой:
function errorFunction(position) {
alert('Error!');
}
Вот окончательный пример страницы (http://devfiles.myopera.com/articles/1231/basic_geolocation_example.htm).
Если вы хотите продолжать наблюдение за местоположением пользователя и обновлять соответственно функцию, можно использовать функцию navigator.. Она получает такие же параметры и работает почти таким же образом как и getCurrentPosition(). В обеих функциях getCurrentPosisition() и watchPosition() необходим только первый параметр. Второй параметр, который обрабатывает ошибку, является необязательным. Кроме того, существует третий необязательный параметр — объект, содержащий атрибуты, определяющие:
getCurrentPosition() или watchPosition().Возможность определить местоположение пользователя является очень полезным свойством. Однако с помощью API вы получаете широту и долготу. Как определить чему соответствует на Земле пара широта/долгота? Здесь на помощь приходит обратное геокодирование.
Обратное геокодирование является процессом поиска, чему в точности соответствует пара широта/долгота. Например, для пары широта/долгота (38.898748, -77.037684) обратное геокодирование сообщает, что это соответствует Белому Дому в Вашингтоне, D.C.
Существует несколько способов выполнения обратного геокодирования, и все они требуют использования некоторой внешней службы или чего-то еще. Для этого можно использовать API GeoNames.org (http://www.geonames.org/export/web-services.html), а также API WikiMapia или множество данных, называемое Nominatim (http://wiki.openstreetmap.org/wiki/Nominatim#Reverse_Geocoding_.2F_Address_lookup), поддерживаемое добровольцами. Google Maps также предоставляет способ обратного геокодирования пары широта/долгота в реальные адреса для отображения на карте.
Другие API, где можно использовать пару широта/долгота включают API Flickr, который содержит методы для извлечения фотографий, сделанных в определенных координатах, API Meetup.com, и другие.
Давайте быстро просмотрим небольшой пример, который использует Google Maps для отображения карты места, где в данный момент находится пользователь. Мы включаем сначала сценарий для загрузки Google Maps на страницу:
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
Затем мы включаем логику для определения местоположения и отображения карты, центрированной по местоположению:
<script type="text/javascript">
// Determine support for Geolocation
if (navigator.geolocation) {
// Locate position
navigator.geolocation.getCurrentPosition(displayPosition, errorFunction);
} else {
alert('Похоже, что Geolocation, которая требуется для этой страницы, не включена в браузере.
Пожалуйста, используйте браузер, который ее поддерживает.');
}
// Функция обратного вызова в случае успеха
function displayPosition(pos) {
var mylat = pos.coords.latitude;
var mylong = pos.coords.longitude;
var thediv = document.getElementById('locationinfo');
thediv.innerHTML = '<p>Your longitude is :' +
mylong + ' and your latitide is ' + mylat + '</p>';
//Загружаем Google Map
var latlng = new google.maps.LatLng(mylat, mylong);
var myOptions = {
zoom: 15,
center: latlng,
mapTypeId: google.maps.MapTypeId.HYBRID
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
//Добавляем маркер
var marker = new google.maps.Marker({
position: latlng,
map: map,
title:"You are here"
});
}
// Функция обратного вызова в случае ошибки
function errorFunction(pos) {
alert('Error!');
}
</script>
Наконец, код HTML и CSS для отображения данных имеет следующий вид:
<head>
<style type="text/css">
html, body {
width: 100%;
height: 100%;
}
#map_canvas {
height: 85%;
width: 100%;
}
</style>
</head>
<body>
<div id="map_canvas"></div>
<div id="locationinfo"></div>
</body>
Рисунок 11.2 показывает получающийся пример геолокации. Он спрашивает разрешения использовать местоположение, а затем выводит Google Map вашего местоположения.
(рис 11.2) Снимок с экрана страницы, которая показывает ваши координаты и карту, центрированную по этим координатам
На показанном выше снимке с экрана можно заметить справа в адресной строке небольшую иконку, представляющую геолокацию. Эта иконка будет присутствовать на любой странице, на которой используется геолокация. Если вы отклоняете права на геолокацию для страницы, которая ее запрашивает, то иконка не появится в адресной строке этой вкладки. Щелкните на иконке чтобы получить доступ к дополнительным настройкам, связанным с геолокацией, такими как отказ странице в доступе к вашему местоположению.
API геолокации W3C предоставляет разработчикам Web интересный и удобный способ использовать местоположение пользователя в своих приложениях. Сегодня это можно сделать точнее, чем раньше, и обеспечить пользователям более высокий уровень приватности. Теперь задача разработчиков создать приложения, которые в полной мере смогут использовать эти возможности.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.