—»     —»   Удивительный мир гео-локации
  Раздел: Разное   Нет комментариев  

Удивительный мир гео-локации

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

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

Все очень просто – достаете телефон, указываете месторасположение и получаете ближайшие пути достижения установленной точки. Для того чтобы это стало возможным, были приложены огромные усилия. Хорошее заключается в том, что теперь и простые смертные, как мы с вами, можем создавать продукты, о которых будет известно на географическом уровне, при помощи всего нескольких строк кода. Итак, давайте подробнее окунемся в этот удивительный мир.

Почему ГЕО имеет значение?

Для начала нужно выяснить, почему физическое месторасположение так важно (в данный момент), если речь идет о разработке Веб-продуктов? Существует несколько ответов на этот вопрос.

Первая причина заключается в мобильности. Времена, когда люди целыми днями сидят перед мониторами своих настольных ПК уже сходят на нет. Повышаются продажи мобильных гаджетов, ноутбуков и нэтбуков. Мощности современных процессоров теперь позволяют пользоваться гораздо меньшими устройствами и деталями чтобы выполнять те же функции, что и на стационарном ПК. Итак, если люди пользуются этими устройствами на ходу, то нам нужно, чтобы наша система была вместе с ними. Что незаметно переносит нас ко второму важному пункту – релевантность.

Очень важно давать пользователю информацию, релевантную его текущему местонахождению. Каждый человек подвержен привычкам. Хотя мы и любим обилие информации и продуктов в сети Интернет, нам также хочется иметь все это под рукой в реальной жизни: встречаться с людьми, посещать бистро, интересные здания и музеи, в которых можно получить много различной информации. Рекламная индустрия, особенно на темы для взрослых и темы развития отношений, сильно разрослись за несколько прошлых лет. Вероятно, вы и сами уже сталкивались с этими элементами.

Удивительный мир гео-локации

Мы точно уверены, что такого рода объявления гораздо успешнее тех, в которых отображены только имена. Не думаем, что изображения и названия, одинаковые для всех локаций, это такая уж и проблема (вы, наверное, уже заметили это). Итак, как же это все устроено?

Получение данных о месторасположении пользователя посредством IP

У каждого компьютера в сети есть свой личный номер – IP-адрес. Интернет, сам по себе, не представляет ничего большего, кроме как массивную сеть, а ваши номера IP присваиваются вам вашим провайдером, через которого вы выходите в Интернет. Так как номера IP-адресов зависят от локации абонентов (так же, как и обычные телефонные номера), вы можете достаточно точно определять, где находится ваш посетитель.

Для определения местонахождения телефонного абонента вы можете воспользоваться адресной книгой (телефонным справочником). Для того чтобы определить местонахождение абонента по IP-адресу, вы можете воспользоваться базой данных Maxmind GeoIP. Maxmind также представляет собой JavaSctipt-приложение, которое вы можете использовать в веб-сайтах:

<script type="text/javascript" src="http://j.maxmind.com/app/geoip.js"></script>
<script>
  var info = document.getElementById('info');
  var lat = geoip_latitude();
  var lon = geoip_longitude();
  var city = geoip_city();
  var out = '<h3>Information from your IP</h3>'+
            '<ul>'+
            '<li>Latitude: ' + lat + '</li>'+
            '<li>Longitude: ' + lon + '</li>'+
            '<li>City: ' + city + '</li>'+
            '<li>Region: ' + geoip_region() + '</li>'+
            '<li>Region Name: ' + geoip_region_name() + '</li>'+
            '<li>Postal Code: ' + geoip_postal_code() + '</li>'+
            '<li>Country Code: ' + geoip_country_code() + '</li>'+
            '<li>Country Name: ' + geoip_country_name() + '</li>'+
            '</ul>'
  info.innerHTML = out;
</script>

Удивительный мир гео-локации

Это дает вам какую-то информацию по поводу пользователя (попробуйте сами). Однако, есть небольшая проблема с актуальностью этой информации. Ваш IP-адрес, это IP, который выдал вам ваш провайдер. В зависимости от вашего провайдера, который может быть расположен очень далеко (например, если вы живете в Лондоне, а ваш провайдер выдал вам ip-адрес, который подразумевает город Рочестер). Еще одна проблема заключается в компаниях, которые используют VPN. На Yahoo!, например, приходится подключатся через VPN, чтобы была возможность читать почту компании, и приходится выбирать месторасположения для подключения к:

Удивительный мир гео-локации

Итак, для решения таких проблем приходится врать о собственном месте расположения (что иногда очень даже полезно для просмотра телевизионных программ в Англии, когда вы сами находитесь в США). Гео-локация по IP, это скорее приближенная наука, чем точная.

Получение данных о местонахождении пользователя посредством API W3C Geo

Совершенно возможно угадать месторасположение пользователя посредством IP-адреса, но это очень неудобно. Конечно, удобно пользоваться месторасположением и гео-данными, но большинство людей, особенно которые помешаны на собственной безопасности и не очень доверяют сети Интернет, покажется не очень привлекательной идея, что за их движениями будут следить компьютеры. В плане: Если мы знаем, чем вы занимаетесь днем и ночью, то нам не составит труда ограбить ваш дом, когда вас в нем не будет.

Существует множество различных способов получения данных о месте расположения, сохраняя при этом приватность и конфиденциальность. В Google Gears есть сервис гео-локации; Plazes позволяет вам размещать данные; и Fire Eagle от Yahoo считается наиболее отстроенным сервисом хранения гео-локаций в сети.

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

Сейчас у нас есть рекомендации по API гео-локациям от W3C. API позволяет браузерам делать запрос о географическом месторасположении пользователя. Эта процедура менее устрашающая, и вам в ответ приходят актуальные данные.

Firefox 3.5 и версии выше поддерживают API гео-локаций от W3C. И Safari в iPhone также поддерживает его, если у вас OS3.0 или выше. Если вы воспользуетесь данным API, то браузер спросит пользователя о разрешении разместить информацию об их месторасположении на их сайте.

Удивительный мир гео-локации

Как только пользователь дает согласие, вы можете получить более подробные данные (в виде долготы и широты). Этот API очень просто использовать:

// if the browser supports the w3c geo api
if(navigator.geolocation){
  // get the current position
  navigator.geolocation.getCurrentPosition(

  // if this was successful, get the latitude and longitude
  function(position){
    var lat = position.coords.latitude;
    var lon = position.coords.longitude;
  },
  // if there was an error
  function(error){
    alert('ouch');
  });
}

Сравним решения W3C и IP-адресов. Как вы видите, есть небольшое различие в измерениях местонахождении посетителя. Различия показаны в демо:

Удивительный мир гео-локации

Преобразование долготы и широты обратно в имя

Конечно, иметь больше информации – это хорошо, но мы утеряли имя города и все другую полезную информацию, которую получили из базы данных Maxmind. Так как локация поменялась, мы не можем просто охватить старые данные; нам нужно найти способ преобразования долготы и широты в имена. Этот процесс назвается «реверсивный кодинг гео», и в сети есть несколько сервисов, которые помогут вам это реализовать. Наверное, одним из самых известных в этом деле является Веб-сервис гео-имен, но здесь есть несколько аспектов. Для начинающих, данные могут быть ориентированы только на США.

Один из бесплатных, но менее известных реверсивных гео-кодеров, которые работают по всему миру, на удивление происходит от ресурса Flickr. Сервис flickr.places.findByLatLon возвращает локацию из координат долготы и широты. Вы можете самостоятельно опробовать сервис через проводник приложений, но самым легким способом применения считается Yahoo Query Language (или YQL). YQL заслуживает целой отдельной статьи, но давайте мы просто скажем, что вместо того, чтобы аутентифицироваться в API Flickr и читать документацию, реверсивный гео-кодинг представляет собой нечто более легкое:

select * from flickr.places where lat=37.416115 and lon=-122.0245671

При помощи сервиса YQL, вы сможете получить результат в виде XML или JSON. Итак, для того, чтобы использовать сервис посредством javascript, вам потребуется лишь следующее:

<script type="text/javascript" charset="utf-8">
function getPlaceFromFlickr(lat,lon,callback){
   // the YQL statement
   var yql = 'select * from flickr.places where lat='+lat+' and lon='+lon;

   // assembling the YQL webservice API
   var url = 'http://query.yahooapis.com/v1/public/yql?q='+
              encodeURIComponent(yql)+'&format=json&diagnostics='+
              'false&callback='+callback;

   // create a new script node and add it to the document
   var s = document.createElement('script');
   s.setAttribute('src',url);
   document.getElementsByTagName('head')[0].appendChild(s);
};

// callback in case there is a place found
function output(o){
   if(typeof(o.query.results.places.place) != 'undefined'){
     alert(o.query.results.places.place.name);
   }
}

// call the function with my current lat/lon
getPlaceFromFlickr(37.416115,-122.02456,'output');
</script>

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

Удивительный мир гео-локации

Проблема с координатами долготы и широты

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

WOEID как спасение

Для того чтобы разобраться с проблемой, Yahoo и Flickr (а вскоре и Twitter) поддерживают другой вариант обозначения локаций. WOEID или «Where On Earth Identifier» (в пер. – «Идентификатор точек на Земле») представляет собой более детализированный способ обозначения локаций на Земле. Так как Flickr поддерживает его, мы с легкостью можем получать фотографии из определенных мест:

select * from flickr.photos.search where woe_id in (
  select place.woeid from flickr.places where lat=37.416115 and lon=-122.02456
)

Используя несколько строк кода javascript, отображение привязанных к локации изображений, становится проще простого:

Удивительный мир гео-локации

К тому же, это можно обличить в простенькое решение YQL. Следующий код отобразит 10 фотографий Парижа:

<script>
  function photos(o){
    var container = document.getElementById('photos');
    container.innerHTML = o.results;
  }
</script>
<script src="http://query.yahooapis.com/v1/public/yql?q=
select%20*%20from%20flickr.photolist%20where%20location%3D%22<strong>paris%2Cfr</strong>
%22%20and%20text%3D%22%22%20and%20amount%3D<strong>10</strong>&format=xml&
env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=<strong>photos</strong>">

Вы также можете обыграть его в консоли YQL.

Почему бы не производить поиск по наименованиям локаций?

Основным вопросом внедрения новой технологии пока что остается вопрос о том, почему мы не можем производить поиск локаций на Flickr, например, по определенному городу, почему нам нужно вдаваться в этот сложный процесс поиска? Причина заключается в ложных совпадениях. Возьмите, к примеру, Париж (Paris). Если вы ищете фотографии города, то вам вряд ли будет интересно наткнуться на фотографии Пэрис Хилтон (Paris Hilton)? То же самое происходит и с Джеком Лондоном. Возможно, вы ищете фотографии Лондона, того что в Англии, а не в Онтарио. Географические данные полны такого рода совпадений. Попробуйте вбить в поиске википедии слово Victoria, и вы наверняка будете удивлены количеством возможных вариантов данных.

Преобразуем текст в гео-данные

Поиск местонахождения посетителя – это, конечно, хорошо. Но это ничего не значит, если вы не можете связать эти данные с информацией о ближайшей области. В сервисе Flickr (а вскоре и в Twitter) это сделать очень просто, так как оба сервиса позволяют вам прикрепить географическое расположение к содержимому, которое вы внесли ранее. И все это лишь мелкая часть того, что будет доступно после открытий и разработок в области изучения алгоритмов, машиностроения и других наук, изучающих интеллект компьютеров.

Допустим, вы хотите определить географическое месторасположение конкретного текста или элемента, о котором рассказывается в тексте веб-страницы. Yahoo предлагает сервис под названием Placemaker, и им очень просто пользоваться. Вам необходим ключ разработчика и нужно отправить его в качестве "appid", а также текст в качестве "documentContent", указать тип текста в качестве "documentContent" и указать тип данных, которые вы хотите получить в качестве "outputType". И все это должно быть отослано посредством "POST" на http://wherein.yahooapis.com/v1/document:

<form action="<strong>http://wherein.yahooapis.com/v1/document</strong>" method="post">
  <textarea id="text" name="documentContent">Hi there, I am Chris.
    I live in London, I am currently in Sunnyvale and will soon be in
    Atlanta and Las Vegas.</textarea>
  <div><input type="submit" name="sub" value="get locations"></div>
  <input type="hidden" name="appid" value="<strong>{YOUR_APP_ID}</strong>">
  <input type="hidden" name="documentType" value="text/plain">
  <input type="hidden" name="outputType" value="xml">
</form>

Вы можете самостоятельно попробовать сделать это. Используя PHP, вызовите API вместо простой формы. Вы даже можете отформатировать получаемые на выходе данные. Посмотрите здесь:

Удивительный мир гео-локации

Хотя сервис Placemaker легок в использовании для разработчиков, которые уже достаточно давно пользуются веб-сервисами, он сможет показаться достаточно сложным для обычных разработчиков. Вот почему недавно был создан сервис GeoMaker. GeoMaker позволяет вам вводить текст или ссылку, выбирать локации, которые вам хочется, и вносить эти данные в список желаемой выдачи поиска. И вы сможете получать локации в виде карты с возможность копирования или в виде микро-форматов.

Удивительный мир гео-локации

Тем не менее, так как есть возможность работы с PlaceMaker в javascript посредством YQL, мы сможем делать то же самое, внося всего несколько строчек кода на клиентской стороне, тем самым совершенствуя документ HTML. Посмотрите на этот пример:

Удивительный мир гео-локации

Для того чтобы воспользоваться этим, вам потребуются три вещи: текст с географическим месторасположением, заключенный в ID, API Google Maps (который можно скачать отсюда), и следующий код:

<script src="http://github.com/codepo8/geotoys/raw/master/addmap.js"></script>
<script>
addmap.config.mapkey = 'COPY YOUR API KEY HERE';
addmap.analyse('content');
</script>

Это позволяет с невероятной легкостью создавать впечатление пользователей, что текст неразрывно связан с определенной точкой мира.

Добавление карт в собственные документы

Онлайн-карты появились совсем недавно (и Google Maps сыграло большую роль в становлении AJAX). Многие провайдеры дают возможность внедрять карты в ваши документы. Google, скорее всего, лидирует, но Yahoo тоже предоставляет сервис с картами, а также есть еще и Microsoft и многие другие. Существует даже полноценный сервис карт под названием «Open Street Maps».

Если вам нужны интерактивные карты, наверное, наилучшим решением будет воспользоваться сервисом Mapstraction, который является библиотекой javascript, которая позволяет забыть о различиях между сервисами, предоставляющими карты, и предоставляет вам единый интерфейс, с помощью которого вы сможете пользоваться картами. В 24ways было опубликовано хорошее описание несколько лет назад.

Наверное, самый простой способ отображения карты с поддержкой маркеров и путей в документы без глубокого погружения в javascript, – это воспользоваться API статичных карт Google. Он создает карты в виде изображений, и вам нужно лишь предоставить информацию о карте и "src" URI атрибуте изображения. Например, в примере скрипта выше, это будет выглядеть как:

http://maps.google.com/maps/api/staticmap?
sensor=false
&size=200x200
&maptype=roadmap
&key=<em>YOUR_MAP_KEY</em>
&markers=color:blue|label:1|37.4447,-122.161
&markers=color:blue|label:2|37.3385,-121.886
&markers=color:blue|label:3|37.3716,-122.038
&markers=color:blue|label:4|37.7792,-122.42

Вы можете указать размер и тип карты. Если все что вы сможете предоставить, это расположение маркеров, то API автоматически определит уровень увеличения и область будет отображена так, чтобы все маркеры были видны. Вебсайт Google даже предлагает детализированный инструмент для создания статических карт, включая маркеры и пути.

GEO – это то, на что стоит смотреть

Надеемся, что у нас получилось составить у вас некоторое представление об этой технологии, и что вы с легкостью сможете применять знания при разработке собственных продуктов. Гео-локация и сервисы, способные работать с данной технологией уже сейчас представляют собой огромные проекты, и на данный момент они являются очень важной отраслью разработки и развития. Будет гораздо больше сервисов – некоторые мобильные провайдеры уже готовы выпускать новое оборудование и программное обеспечение, которые тоже будут неразрывно связаны с этой технологией.

Все что нужно миру гео – внимание дизайнеров. Если вы дизайнер, то вы можете помочь разработчикам соответствующих приложений, чтобы эти проекты предстали перед посетителями в более привлекательном облике. Для вдохновения вы можете посетить Mapumental - сервис, в котором можно указывать различные места в Лондоне, или просто посмотрите на работу Google Earth, иногда вы сможете поуправлять даже крохотными машинками на местности.
Обнаружили ошибку или мёртвую ссылку?
Выделите проблемный фрагмент мышкой и нажмите CTRL+ENTER.
В появившемся окне опишите проблему и отправьте уведомление Администрации ресурса.
Нужна органическая вечная ссылка из данной статьи? Постовой?
Подробности здесь
Вам понравился материал? Поблагодарить легко!
Будем весьма признательны, если поделитесь этой статьей в социальных сетях:

Ключевые тэги: Google Maps, javascript, Google Earth
Опубликовал Mysterious Master   Прочитано (раз): 11410   |   Нет комментариев
Источник материала / оригинал статьи   Распечатать
Другие статьи и новости по теме:
Добавление комментария
Уважаемые пользователи!
При добавлении комментариев на сайт Вам следует учитывать следующее - все комментарии проверяются Администрацией на предмет отсутствия спама. При обнаружении признаков спама, в оставленном Вами комментарии, сам комментарий будет незамедлительно удалён, а Ваш IP-адрес будет забанен без предупреждения! Учётные записи пользователей, рассылающих спам, блокируются/удаляются без права последующего восстановления.

С уважением, Администрация сайта.
* = поля обязательны к заполнению
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Вопрос : Назовите месяц October по-русски
Подтверждение кода безопасности :

Включите эту картинку для отображения кода безопасности
обновить, если не виден код


Спонсоры проекта
Баннер в сайдбаре 1 (сквозной)
Баннер в сайдбаре 2 (сквозной)
Спонсоры проекта
Баннер в сайдбаре 3 (сквозной)
Баннер в сайдбаре 4 (сквозной)







Свежие шаблоны сайтов каждый день
С миру по нитке
«    Июнь 2020    »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930