Узнать где я сейчас нахожусь! Найти моё местоположение
Для того что бы найти собственное местоположение на карте, нажмите кнопку
геолокации
в правом верхнем углу экрана.
Способы определения собственного местоположения:
- По IP адресу – предоставляет приблизательные данные, выполняется без взаимодействия с пользователем
- Используя Geolocation API – предоставляется более высокая точность, но для этого требуется разрешение пользователя
При помощи данного интрумента Вы можете:
- узнать своё местоположение онлайн
- найти места по близости
- найти ближайшие адреса
- увидеть своё местоположение на карте
- показать карту рядом со мной
GPS — система для навигации с использованием спутника, для измерения расстояния и времени. Помогает определять положение по всеобщей системе координат. В первую очередь создана в интересах военных США, с наступлением современных технологий стала доступна для каждого из нас, имеющего девайс с GPS приемником.
GPS система
Система глобального позиционирования работает по принципу трех точек. Телефон или другое устройство получает сигналы от спутников, которые находятся в космосе. При этом достоверные точные данные получаются при использовании трех и более спутников.
В космическом пространстве на данный момент задействовано 32 спутника, занятых в этой сфере. Они покрывают всю территорию Земли, и даже если один уходит за горизонт, другие останутся в зоне видимости устройства.
Чтобы спутники не ошибались в координатах и времени существуют наземные станции синхронизации. Они просчитывают все: местоположение, время, смещение земли, смещение орбиты. Несколько раз в день информация обновляется, для точного определения геолокации.
Координаты на карте
Любая из современных карт состоит из координат. Широта и долгота определяют наше положение на карте. С их помощью можно найти любую точку на карте с точностью до сантиметра.
Широта — расстояние от экватора до заданной точки.
Долгота — расстояние от нулевого меридиана до заданной точки.
Как по координатам найти место на карте
В современном мире все зависит от местоположения и геолокации. Почти каждый день нам приходится искать какие-то новые места, а иногда даже использовать в поисках точные координаты нужного места. В таком поиске нет ничего сложного, необходимо просто подставить координаты в карту и место откроется.
Рассмотрим самые распространенные сервисы карт для работы, поиска мест и повседневного использования.
Яндекс
Яндекс – российский IT гигант имеет свою версию карт. Они включают в себя как Россию, так и весь мир. На картах указаны все места, достопримечательности, магазины, парки.
Существует раздел с организациями, где указаны организации в каждом доме, добавлены отзывы и фотографии, телефоны и часы работы для удобства пользователей.
Сервис умеет строить карты маршрутов, как пешком, так и на личном и общественном транспорте. Отличительная и приятная особенность приложения это возможность работать в оффлайн режиме и взаимодействовать с подробными 3D картами городов.
Смотрим своё местоположение на Яндекс картах
Чтобы узнать с помощью сервиса Яндекс, где я сейчас нахожусь, необходимо на главном экране карты выбрать GPS поиск. После чего устройство определит геолокацию, направление движения и скорость.
Так же при нажатии, иконка пользователя закрепляется в середине экрана, что удобно при использовании устройства, как навигатора.
При использовании голосового помощника «Алиса» процесс пользования картами облегчается. Достаточно сказать «Алиса, где я». Ассистент может так же подсказать пробки, составить маршрут или просто развлекать пользователя в пробке.
Как отправить человеку свое местоположение через Яндекс карты
Самый простой способ показать, где я сейчас нахожусь, другому человеку – поделиться своей геолокацией. Вот простая инструкция, как это сделать:
- Запустить Яндекс карты
- Определить свое местоположение
- Нажать на иконку местоположения пользователя
- Снизу рядом с координатами нажать значок «три точки в ряд»
- Так же можно нажать на значок квадрат со стрелкой и выбрать приложение для отправки координат
Координаты приходят в виде гиперссылки. Получатель сразу может открыть и посмотреть место, которое было ему отправлено.
Общественный транспорт на картах Яндекс
Отечественный сервис имеет еще одно большое преимущество в использовании. В него встроена функция отображения общественного транспорта.
Приложение показывает расположение общественного транспорта в реальном времени. Так же существует возможность узнать, во сколько транспорт прибудет на остановку.
Чтобы активировать эту функцию, необходимо:В правом верхнем углу нажать кнопку «слои» – «движущийся транспорт» – «показывать все виды». Либо настроить только нужные маршруты.
Весь транспорт будет отображен на карте. При нажатии на остановку указывается время прибытия автотранспорта по определенным маршрутам.
Карты от мировой корпорации Google (Гугл) – это целый набор приложений и сервисов, с обширным функционалом. Карты Google (Гугл) начали работать в 2005 году. Отличительные особенности сервиса – это спутниковые снимки хорошего качества и возможность просмотра карт под углом.
Удобная функция – подробные фотографии улиц, которые можно крутить на 360 градусов. Сейчас в сервис добавлено более 3 тысяч городов со снимками улиц.
Из интересных функций еще можно отметить карты планет и спутников.
Смотрим своё местоположение на Google картах
Если вы решили ответить на вопрос «где я сейчас» с помощью сервиса от Google (Гугл), то процесс будет такой же, как и в предыдущем случае. Нужно нажать на иконку определения геолокации и на карте будет показано, где пользователь сейчас.
Как отправить человеку свое местоположение через Google карты
Чтобы отправить свою позицию на карте другому человеку нужно:
- Запустить приложение Google (Гугл) карты
- Нажать на точку местоположения
- Нажать на координаты, они будут скопированы
Найти магазины рядом с домом
Google (Гугл) позволяет быстро найти магазины, бары, рестораны, кафе, находящиеся рядом с домом. Достаточно в поиске написать «магазины». Появится список, в котором будут предложены разные интересующие места. В списке будут указаны номера телефонов организаций, часы работы, отзывы и фотография для удобства нахождения.
Для большего удобства в поиске можно использовать голосовой ассистент Google. Помощник уточнит ваш запрос, озвучит результат и сразу проложит путь к пункту назначения.
Определение широты и долготы на карте
Рассмотрим встроенные программы для определения координат местонахождения. Остановимся на двух самых распространенных.
Координаты на Android компас
В операционной системе Android (Андроид) нет встроенного компаса, но есть множество сторонних приложений в Google Play (Гугл Плей), которые можно скачать. Рассмотрим самое популярное приложение «Компас 360», которое имеет множество преимуществ. Вот основные из них:
- Приложение работает без интернета
- Имеет магнитный и истинный север
- Присутствует функция металлоискателя
- Множество скинов для внешнего вида программы
- Определяет точное местоположение через GPS систему
Координаты на iPhone компас
Чтобы пользоваться встроенным функционалом iPhone (Айфон), сначала требуется настроить приложение. Рассмотрим, как его настроить и использовать:
- Зайти в приложение Компас
- Откалибровать телефон, делая им круги. Когда шкала будет полностью заполнена белым, калибровка окончена.
- На компасе будет указаны стороны света.
- Ниже будут написаны координаты: широта и долгота. Так же будет определена местность и высота над уровнем моря.
Компас можно так же синхронизировать с другими приложениями. Это способствует лучшему функционированию сторонних карт.
Сервисы для поиска места по координатам
Помимо двух известных IT компаний, на рынке онлайн карт есть множество других компаний. Рассмотрим коротко основные карты и посмотрим, как в них решить задачи поиска места по координате.
Яндекс карты
- Запустите карты в любом браузере или официальном приложении.
- Откройте строку «поиск мест и адресов»
- Введите в нее географические координаты
Google maps
- Откройте Google Карты на компьютере или смартфоне
- В окно поиска введите координаты.
Допускаются следующие форматы:
- Десятичные градусы
- Градусы, минуты и секунды
- Градусы и десятичные минуты
2GIS
Российская компания, занимающаяся выпусками электронных карт и справочников с 1999 года. Имеет успех не только в РФ, но и в странах Европы и арабского мира. Интерфейс у нее такой же, как у двух вышеописанных компаний.
Поиск по координатам проходит через строку поиска. Координаты можно отправить следующим образом:
- Выделить участок, координаты которого нужно отправить
- В верхнем углу нажать отправить
- Скопировать или отправить ссылку на координаты
Locus map
Очень функциональное приложение для навигации на андроид. Оно решает широкий спектр задач по онлайн и оффлайн GPS навигации. Используется даже профессионалами, начиная от туристов и заканчивая спасателями и разведчиками.
Поиск по координатам осуществляется по следующему алгоритму:
- «Поиск»
- «Перейти к…»
- «Координаты»
- Ввести координаты
Navitel
Компания, производящая видеорегистраторы, навигаторы и софт к ним. В отличии от остальных перечисленных программ, эта – платная. Все устройства поддерживают оффлайн режим и имеют все основные функции для удобства использования.
Поиск по координате выполняется следующим образом:
- Открыть меню
- Открыть пункт «по координатам»
- Ввести данные
- Нажать «Результат»
Данные используемые для отслеживания местоположения
Местоположение пользователя может отслеживаться не только с помощью GPS. Приложения так же используют для определения геолокации мобильные сети, Wi-Fi и Bluetooth, подключаясь к сетям в кафе и торговых центрах.
Определение геолокации через мобильные сети позволяет существенно сэкономить заряд устройства, так как использование сервисов GPS очень затратное действие для аккумулятора. То же самое и при использовании сетей Wi-Fi и Bluetooth.
Безопасность данных
Использование GPS очень облегчает нам жизнь. Помощь в навигации, персонализированные прогнозы погоды, отслеживание перемещений детей – все это блага, которые предоставляются этой технологией.
Но есть у нее и обратная сторона – перепродажа данных. Приложения и сайты, имеющие доступ к данным местоположения пользователя, могут продавать эту информацию своим партнерам. Самое невинное последствие этого, реклама.
Но мы не можем знать наверняка, кто получит доступ к этим данным. По этому, давая разрешение на их использование, следует внимательно читать соглашение и обращать внимание – анонимные ли это данные или нет.
Так же можно отозвать разрешение на использование таких данных для приложений , без которых можно обойтись. Не следует давать разрешения на использование этих данных непонятным и неизвестным разработчикам.
Как найти координаты или выполнить поиск по широте и долготе
Чтобы найти место, введите на Google Картах GPS-координаты широты и долготы. Вы также можете найти координаты просмотренных ранее мест.
Если у места нет обычного адреса, то найти это место и поделиться им на Google Картах можно с помощью кода Plus Code.
Как ввести координаты места
- Откройте приложение “Google Карты” на устройстве Android.
- В окно поиска введите координаты. Допускаются следующие форматы:
- Десятичные градусы: 41.40338, 2.17403
- Градусы, минуты и секунды: 41°24’12.2″N 2°10’26.5″E
- Градусы и десятичные минуты: 41 24.2028, 2 10.4418
Как узнать координаты места
- Откройте приложение “Google Карты” на устройстве Android.
- Нажмите и удерживайте неотмеченное место на карте. Будет добавлен красный маркер.
- В после поиска появятся координаты.
Как отформатировать координаты
Чтобы координаты распознавались в Google Картах, указывайте их только в следующем десятичном формате:
- Правильно: 41.40338, 2.17403.
- Неправильно: 41,40338, 2,17403.
Примечания
- Сначала указывается широта, затем долгота.
- Для широты используйте значения в диапазоне от -90 до 90.
- Долготу указывайте в диапазоне от -180 до 180.
Эта информация оказалась полезной?
Как можно улучшить эту статью?
Узнать координаты на карте необходимо в разных ситуациях. Например, если вы заблудились в лесу или в незнакомом городе. Оказать вам помощь будет гораздо легче, если известно местоположение. Расскажем, как узнать свои координаты.
Легче всего это сделать при помощи вашего смартфона на IOS или Android. При помощи GPS-модуля телефон без проблем определит вашу геопозицию. Помогут ему в этом специальные программы, о которых поговорим ниже. Перед тем как приступить к любому из способов не забудьте обязательно включить режим определения геопозиции иначе ваше местоположение может быть определено с большой погрешностью!
Как узнать координаты на телефоне андроид
Встроеный компас на Андройд
Если вы заранее не подготовились и не скачивали специальных программ, вам может помочь встроенное приложение “Компас” которое по умолчнию должно быть у каждого владельца смартфона на базе Андройд. При первом запуске программа попросить откалибровать компас осуществляя движения телефоном по траектории восьмерки после чего, если положить телефон в горизонтальное положение, на экране отобразиться сам компас, а внизу географические координаты.
К сожалению в компасе координаты невозможно скопировать в буфер обмена, и как следствие вам придется их запомнить. Также существенный минус компаса заключается в том, что в нем не отображается сама карта и вы видите только набор цифр, без возможности сопоставить координаты с вашим местоположением на местности.
Встроенные карты гугл Андройд
Вторым более полезным вариантом будет узнать координаты и ваше местоположение при помощи приложения гугл карты, которое также должно быть на вашем смартфоне по умолчанию.
После запуска приложения на экране отобразиться карта местности от гугл (при условии конечно, что есть доступ в сеть интернет) на карте отобразится ваше текущее местоположение в виде синей точки. Даже если интернета нет, синяя точка все равно покажется, просто вместо карты вы увидите серое пятно. Примечание, если точка отображается серым цветом, значит ваше местоположение определено не точно, включите модуль GPS (описано в начале статьи).
Далее нажмите на синюю точку пальцем, удеживайте некоторое время и отпустите, чтобы показался красный маркер. В нижней части экрана отобразится белая плашка с заголовком текущего места и кнопками “маршрут”, “поделиться”.
Нажмите на заголовок на плашке и на экране покажется подробная информация в том числе ваши координаты и pulse код.
Locus Map
Если вы ищите, как узнать координаты на Андроид, то эта программа-навигатор подходит лучше всего. При помощи Locus Map можно узнать свое местоположение, использовать путевые точки и маршруты. Что важно, карты отлично работают в оффлайн-режиме.
Скачать Locus Map можно в Google Play. У приложения есть бесплатная и платная версии. Вторая отличается отсутствием рекламного баннера сверху, а также некоторыми непервостепенными функциями.
Для первоначальной настройки программы необходимо подключение к интернету, поэтому лучше всего скачать ее еще дома. Затем подключаете геопозиционирование, разрешаете программе доступ к нему и получаете точку, где вы находитесь.
Карта показывает место, где вы находитесь. Чтобы понять, как узнать координаты точки, достаточно нажать на нее и удерживать. Появится адрес.
Затем нужно нажать на адрес, и программа покажет ваши координаты. Для копирования нажмите на них.
К сожалению, приложение не работает на iOS.
Карта Координаты
Еще один способ как узнать координаты не телефоне — приложение Карта Координаты (Map Coordinates) для Android. Скачать можно в Google Play. После установки не забудьте включить режим гео-позиционирования, а также разрешить программе доступ к нему. Карта Координаты мгновенно определяет ваше положение и показывает координаты сверху.
В параметрах можно изменить тип координат и единицы измерения.
Местоположение можно скопировать и отправить другу или МЧС.
Теперь вы знаете, как узнать GPS координаты на Андроид. Отдельно расскажем о приложениях для iOS (IPhone).
Как узнать координаты на iPhone: Компас
Чтобы понять, как узнать координаты на iOS, достаточно открыть встроенное приложение Компас. Для начала проверьте, включены ли у вас службы геолокации. При помощи строки поиска на iPhone найдите Компас. В нижней части экрана будут показаны ваши координаты. Их можно легко скопировать и отправить при помощи мессенджеров или СМС.
Как узнать координаты на Яндекс.Карты
Один из универсальных инструментов, подходящий под все операционные системы. Скачать приложение можно в Google Play или App Store.
Зайдите в приложение, предварительно включив режим гео-позиционирования. Разрешите картам доступ к нему. После этого приложение точно определяет местоположение. Узнать координаты на Яндекс просто: достаточно нажать на точку, и они появятся внизу. При помощи значка справа от координат их можно скопировать и переслать.
Как узнать координаты по Гугл Картам
Узнать координаты Гугл легче всего при помощи десктопной версии карт. Это может пригодиться, если вам нужно отправить какую-то точку из дома.
Для этого зайдите на сайт maps.google.ru. Он мгновенно определит ваше местоположение и покажет его внизу страницы.
Если вам нужны координаты какой-либо другой точки, то найдите ее на карте и нажмите: данные вновь появятся внизу.
Узнать координаты на GPS-навигаторе Garmin GPSmap
У многих опытных туристов есть еще один способ узнать долготу и широту: при помощи GPS-навигатора. Один из самых распространенных устройств — Garmin GPSmap. Это туристический портативный прибор, позволяющий определять местоположение как по спутникам системы GPS так и в системе ГЛОНАСС.
При включении прибор автоматически определяет координаты и все время записывает трек. Чтобы узнать текущие координаты достаточно нажать кнопку “MARK” которая находится на передней части навигатора. Кнопка предназначена для сохранения текущего местоположения в памяти устройства. При нажатии на кнопку на экране отображается форма с текущими координатами, которые вы впоследствии можете сообщить МЧС.
Как перевести координаты из одной системы в другую
Координаты могут быть десятичные вида DD.DDDDD (к примеру 50.67916 в.д., 40.841666 с.ш.) и географические (вида DD MM SS DD.DDDDD: 50° 40′ 45” в.д., 40 50′ 30” с.ш.). Чтобы перевести координаты из одной системы в другую, легче всего воспользоваться специальными онлайн-сервисами. Например, https://planetcalc.ru/1129/. Также используйте простую формулу: DDD = DD + MM/60 + SS/3600.
Теперь вы знаете, как определить местоположение на местности при помощи телефона или GPS-навигатора. Удачного путешествия!
Сейчас всё больше мобильных приложений становятся геозависимыми. Одни просто не имеют смысла без знаний о местоположении пользователя, другие становятся с ним удобнее. Это так называемые Location Based Services (LBS): навигаторы, форскверы, инстаграмы с геотегами фотографий и даже приложения-напоминалки, которые срабатывают около конкретного места, например, рядом с офисом или магазином.
Для сервисов и приложений Яндекса мы создали собственную реализацию метода определения местоположения без GPS — Яндекс.Локатор. Он экономит время пользователя и делает наши приложения чуточку умнее. В Навигаторе и Картах она избавляет от ввода начальной точки маршрута, даже если вы на крытой парковке. А при выборе фильма в Киноафише или товара в мобильном Маркете помогает сразу показать, где их найти именно в вашем районе города. Ну и, разумеется, при поиске кафе и банкоматов — позволяет показывать вам сразу ближайшие, даже когда вы в метро.
Технологию мы давно открыли в виде бесплатного API. Сегодня хотим рассказать, как она устроена.
Почему без GPS и как иначе
Спутниковые системы навигации (GNSS), в нашем случае это GPS и ГЛОНАСС, — самый точный на сегодняшний день метод геоопределения. Соответствующие модули есть практически во всех современных смартфонах. Но не всегда и не везде он может решить задачи LBS.
Во-первых, поиск спутников иногда занимает несколько минут, а бывают ситуации, в которых скорость определения важна даже с потерей точности. Например, когда нужно построить предварительный маршрут в навигаторе или зачекиниться. Во-вторых, спутники обычно не «видны» в помещениях или под землёй. В-третьих, GPS-модули есть не в каждом мобильном телефоне или планшете, и их почти нет в ноутбуках. То есть для LBS нужны альтернативы.
И альтернативы, конечно, есть — определять местоположение можно по ближайшим GSM-вышкам, сетям Wi-Fi и даже по IP-адресу. Точность определения у каждого из этих способов гораздо хуже, чем у GPS. Но если их скомбинировать, они вместе дадут приемлемое качество. При этом какие-то недостатки одного нейтрализуются возможностями другого. GSM-вышки есть практически везде, а Wi-Fi сети — нет. При этом по Wi-Fi точность определения лучше. Поэтому комбинированный способ по полноте и точности лучше, чем каждый в отдельности. Менее известен факт, что у двух роутеров в разных частях города может оказаться одинаковый MAC-адрес. Совмещение GSM и Wi-Fi решает такие коллизии. У этих роутеров, скорее всего, рядом будут находиться вышки с разными идентификаторами — ведь вероятность совпадения в пределах квартала гораздо меньше, чем в масштабах всего города.
В мире есть несколько реализаций такого комбинированного способа геоопределения. И кажется, первый вопрос, с которым сталкивались все разработчики, — где же взять информацию о местоположении сетей Wi-Fi и сотовых вышек?
База местоположений сетей
В дилемме «купить или создать» мы в конечном счёте предпочли второе. Основная причина — что с собственными данными и алгоритмами гораздо легче контролировать качество результата. В сборе информации нам помогли пользователи мобильных Яндекс.Карт.
Когда мы начинали разрабатывать Локатор, на улицах городов были уже сотни тысяч людей с включёнными в телефонах Яндекс.Картами. С согласия пользователя приложение постоянно передаёт его GPS-координаты — на основе этой информации строятся Яндекс.Пробки. Мы подумали, что вместе с этим приложение может отмечать, какой базовой станцией обслуживается телефон в этих координатах, какие видны сети Wi-Fi (при этом, конечно, к самим сетям не подключаясь — чтобы не создавать privacy-рисков).
Человеку для участия в таком краудсорсинге ничего специально делать не нужно — просто пользоваться приложением. Как и о координатах, данные об окружающих Wi-Fi сетях и станциях GSM обезличены. Они практически ничего не «весят», и батарейка от их передачи, соответственно, быстрее не садится.
Таким образом, пользователи стали помогать друг другу:
Одни, с GPS-приёмником в телефоне, узнают точное расположение сетей и передают информацию в Яндекс. Другие, у которых GPS-модулей нет, присылают список сетей, которые видят в данный момент, и получают в ответ своё примерное местоположение на карте.
База собрана и регулярно обновляется. И тут мы сталкиваемся со следующей проблемой.
«Переезд» сетей
Опыт показывает, что идентификаторы сотовых вышек постоянно меняются — номер, который вчера был в центре города, завтра может оказаться на окраине. Переезжать могут и Wi-Fi-роутеры — вместе со своими владельцами. И получается, что с каждым переездом нужно инвалидировать заметную часть данных.
Вот как нам удалось решить одновременно проблемы с переездом и вышек, и роутеров. От пользователя поступает запрос на определение местоположения вместе с данными о том, какие сети он видит. Если в списке сетей есть та, что была замечена в разных частях города, алгоритм учитывает, сколько сигналов от неё накоплено в каждом районе и возраст последнего. Каждое плотное скопление сигналов от Wi-Fi сети или сотовой вышки мы называем «облаком». Чем больше сигналов в облаке и чем они свежее, тем больше оно заслуживает доверия. Ответом будет, соответственно, самое большое и свежее. А облако, в котором нет сигналов больше месяца, мы считаем устаревшим — даже если для этой сети не появилось более свежего облака в другом районе.
Радиус облака
Поскольку положение определяется примерно, нельзя показать точку — нужно нарисовать круг (ведь радиосигнал в отсутствие помех распределяется во все стороны равномерно). Хотя, если посмотреть на фактическую картину сигналов, чаще всего это эллипс. Ведь больше всего пользуются мобильными Картами автомобилисты. Их GPS-следы остаются на дорогах, а из дворов и, тем более, из зданий сигналов практически не поступает.
Чтобы ответ был предельно точным, радиус круга должен быть минимальным. Если просто обвести окружность вокруг всех точек сигналов конкретной сети, радиус получится слишком большим. Уменьшить его помогла мат. статистика. Плотность сигналов подвержена нормальному распределению, то есть применимо правило трёх сигм. В окрестность такого радиуса попадает 99,7% точек.
Мы решили пойти дальше и экспериментально подобрали сигме такой коэффициент, который максимально уменьшил радиус, но сохранил приемлемую точность. Удалось это, потому что в большинстве случаев пользователь видит несколько сетей. То есть «открытые» уменьшением коэффициента области, скорее всего, перекрываются другими облаками.
Необлачные сигналы
К сожалению, не все GPS-сигналы от пользователей просто скомпоновать в облака. Оказалось, что, если наложить на карту все сигналы отдельно взятой сети, помимо «эллипсов» на ней окажутся точки и линии. Это, соответственно, одиночные сигналы, сильно удалённые от скопления сигналов той же сети, и очень длинные GPS-треки (т.е. цепочки GPS-сигналов).
«Одиночки» появляются, например, когда человек передвигается на метро. Телефон теряет связь с сотой на одной станции, а при выходе на другой всё ещё считает, что обслуживается той сотой. Такие сигналы Локатор отфильтровывает. Кроме того, мы установили минимальный порог для облаков, чтобы не полагаться на слишком малочисленные скопления сигналов.
Длинные GPS-треки появляются, например, когда человек едет на машине через весь город. Телефон «тащит» за собой идентификатор вышки с начала маршрута и передаёт, что якобы видит её на всём пути. Известно, что у базовых станций ограниченный радиус действия, так что такие GPS-треки Локатор тоже отфильтровывает. Треки, длина которых укладывается в радиус действия вышки, остаются. Как правило, они заметны в районах, где мало данных. Там они становятся цепочкой небольших облаков.
Сигналы-одиночки, маленькие облака и длинные треки мы считаем «шумом». Когда пользователь видит одну единственную сеть, для которой нам известны только такие сигналы, он получает ответ, что местоположение определить не удалось. Мы считаем это более правильным, чем давать заведомо неверный, по нашим оценкам, результат.
Когда данных было накоплено мало, была ещё одна трудность с объединением всех сигналов в одно облако. Случалось что сигналы от вышки из одного города приходили также из другого. Помогло нам наличие в идентификаторах GSM-сетей кода зоны местоположения — LAC (Location Area Code). Поскольку вышки с одинаковым кодом должны по стандарту находиться рядом, облакам, которые оказались «не в своём городе» (т.е. среди облаков с другим LAC), Локатор стал придавать заниженный вес.
Улучшение точности определения…
…по GSM-сетям
Когда-то приложениям была доступна информация лишь об одной базовой станции, хоть телефон видит чаще всего несколько. После появления платформы Android приложения смогли научиться видеть их все (кроме подключения в стандарте 3G, который позволяет узнать только одну сотовую вышку). Местоположение стало определяться точнее — уже не по одному облаку, а по совокупности нескольких. Оказалось, что для множества облаков можно использовать тот же подход, что и для одного. Радиус считается по среднеквадратичному отклонению сигналов, входящих в совокупность облаков, а центр вычисляется по среднему их координат.
…по Wi-Fi-сетям
Когда смартфон находится в радиусе действия нескольких Wi-Fi-сетей, он может сообщить не только их список, но и мощность сигнала каждой. Знание об этой мощности мы и использовали для уточнения центра окружности, в которой находится пользователь. К центрам наблюдаемых облаков мы начали подвешивать воображаемые пружинки — тем туже, чем сильнее сигнал. А их свободные концы — соединять. Точка, в которой эти пружинки уравновешиваются, и есть уточнённый центр.
Получившееся качество
Сначала несколько слов о том, как мы оцениваем качество нашего решения. Как уже говорилось, от пользователей, у которых есть в устройствах GPS-модуль, Локатор получает и координаты, и список сетей, которые видят устройства. Для оценки качества он сначала определяет примерное местоположение, ориентируясь только на эти сети. А затем проверяет, попали ли истинные координаты от пользователя в предположенную Локатором окружность.
Используя эту методику, мы получили следующие цифры:
- для 83% запросов в сутки местоположение определено правильно — GPS-координаты устройства попали в область, названную Локатором
- 14% сигналов — с ошибкой:
- 7% — ошибка меньше 100 метров
- 5,6% — от 100 метров до нескольких километров
- 1,4% — Локатор ошибается городом
- оставшиеся 3% запросов получают ответ «Местоположение не найдено»
Можно ли добиться лучшего качества? Да. Преимущество метода в том, что при определённой зрелости алгоритмов достаточно лишь собирать больше данных, чтобы определять местоположение точнее. А это достаточно легко, потому что растёт и количество Wi-Fi сетей, и количество пользователей наших приложений.
Но есть технологические пределы:
- если телефон сообщает только об одной GSM-вышке — минимальный радиус составит несколько сотен метров в городе, и несколько километров за городом
- если телефон видит несколько вышек — центр можно определить точнее, но радиус уменьшить вряд ли получится
- если видна Wi-Fi сеть — минимальный радиус будет 10 метров
Объёмы вычислений
Чтобы быстро отвечать пользователю, нужно заранее подготовить весь ответ или, хотя бы, существенную часть. Каждую ночь кластер на базе нашей системы распределённых вычислений YAMR агрегирует сигналы, полученные вплоть до вчерашнего дня, получая готовые для ответа «облака». В момент запроса Локатору остаётся только правильным образом их скомбинировать. Так терабайты «сырых сигналов» сжались до 1.5-2 ГБ готовых ответов, которые запросто помещаются в память. И подготовка ответа почти всегда укладывается в 1 мс, а каждый сервер в кластере выдерживает 10 тыс. RPS.
А чтобы продолжительность ежесуточного расчёта не росла линейно с ростом истории GPS-сигналов, мы добились «аддитивности» облаков. Теперь достаточно хранить лишь несколько показателей на каждое облако, и не нужно каждые сутки заново обрабатывать всю старую историю.
Готовить более полный ответ оказывается неэффективно. Если кластеризовать каждую комбинацию сетей в отдельное облако, получается комбинаторный взрыв. Объём готовых ответов растёт на несколько порядков, а при частичном совпадении сетей на подготовку ответа нужно даже больше расчётов.
Аналоги
Сервисы определения местоположения без GPS, как мы уже говорили, есть не только у Яндекса. Разработчики могут обратиться к коммерческому поставщику (как, например, Altergeo в России и Skyhook Wireless в мире), либо использовать API мобильной платформы или браузера.
Вообще собрать такую базу можно тремя способами:
- объехать интересующие города на автомобилях, сканируя сети, а потом периодически объезжать заново, чтобы обновлять базу
- создать массовое мобильное приложение (например, Яндекс.Карты)
- создать мобильную платформу (например, iOS или Android)
Но выбирать между разными решениями приходится только разработчику геозависимого приложения, а пользователь «живёт» с этим выбором. В отсутствие единой методики сравнения нужно обращать внимания на точность определения (радиус «допуска» и процент ошибок) в интересующих регионах.
Правда, и разработчик может выбирать не всегда. На iOS и WindowsMobile приложение может пользоваться только встроенными в операционную систему функциями геоопределения. Приложению там недоступны текущая базовая станция и/или список WiFi-сетей, кроме текущей.
Другая ситуация в веб-сервисах. Во всех современных браузерах встроен API геоопределения. И меняя браузер, пользователь меняет геоопределитель. В Firefox и Google Chrome используется реализация Google, в Safari — Apple, в IE — Microsoft. Наш Локатор работает в браузере Yandex.