Введение в API геолокации
Введение
Уже много лет бумажные карты стали антикварными. Они были заменены специальными GPS-навигационными устройствами и мобильными приложениями, которые стали повсеместными. Вы находите их в автомобилях и, что более важно, на планшетах и смартфонах.
Одной из основных особенностей навигационного устройства является обнаружение текущего положения устройства и его обновление при его изменении. Это помогает нам добраться из одного места в другое, давая нам указания.
Сегодня нам повезло, что геолокация поддерживается браузерами. В этой статье мы обсудим API геолокации, позволяя приложениям обнаруживать и отслеживать местоположение устройства.
1. Что это такое?
API геолокации определяет интерфейс высокого уровня для информации о местоположении, такой как широта и долгота, которая связана с устройством, реализующим геолокацию. Сам API является не привязан к источникам информации о местоположении.
Общие источники информации о местоположении включают в себя Глобальную систему определения местоположения (GPS) и информацию о местоположении, выведенную из сетевых сигналов, таких как IP-адрес устройства, RFID, Wi-Fi, Bluetooth, MAC-адреса, идентификаторы сотовой сети GSM / CDMA и пользовательский ввод. Не предоставляется никаких гарантий, что API возвращает фактическое местоположение устройства.
API геолокации является Рекомендацией W3C, которая означает, что спецификация является стабильной. Мы можем предположить, что оно не изменится в будущем, если не будет работать новая версия. Стоит отметить, что API геолокации не является официально частью спецификации HTML5, поскольку он разработан отдельно.
Теперь, когда мы знаем, что такое API геолокации и что он может сделать, пришло время посмотреть, какие методы он предоставляет разработчикам.
2. Внедрение
Точность
API использует несколько источников для определения позиции устройства. Например, на ноутбуке или настольном компьютере без чипа GPS вполне вероятно, что позиция выводится из IP-адреса устройства, а это означает, что местоположение, возвращаемое API, не очень точное.
Однако на мобильном устройстве API может использовать информацию из нескольких и более точных источников, таких как чип GPS устройства, сетевое соединение (Wi-Fi, 3G, HSPA +) и ячейка GSM / CDMA. Вы можете ожидать более точной информации о местоположении на мобильном устройстве, особенно если GPS включен.
Конфиденциальность
Спецификация API геолокации также обсуждает конфиденциальность и разрешения. Фактически, в спецификации четко указано, что разрешение пользователя должно быть явно получено до включения API.
Это означает, что браузер должен отображать уведомление пользователю, запрашивающему их разрешение. Пример сообщения, показанного пользователю, показан ниже (Карты Google).

Обнаружение поддержки
Поиск устройства
Чтобы получить местоположение устройства, getCurrentPosition и watchPosition делают асинхронный запрос. Разница между этими методами заключается в том, что getCurrentPosition выполняет одноразовый запрос, а watchPosition контролирует местоположение устройства для изменений и уведомляет приложение о том, когда происходит изменение местоположения.
Сигнатуры getCurrentPosition и watchPosition выглядят следующим образом:
Взгляните на следующие фрагменты, чтобы узнать, как вы можете использовать getCurrentPosition и watchPosition для получения местоположения устройства.
Остановить мониторинг местоположения
Информация о местонахождении
Position
Свойство timestamp содержит время обнаружения местоположения, которое может быть полезно, если вам нужно знать, как свежие данные были возвращены.
PositionError
Свойство message кратко описывает тип ошибки. Свойство code может иметь одно из четырех значений:
PositionOptions
В настоящее время объект PositionOptions поддерживает три варианта:
Поддержка браузера
Поддержка API геолокации действительно хороша. Это справедливо для настольных и мобильных браузеров. Взгляните на это резюме, чтобы понять, какие настольные браузеры поддерживают API геолокации:
Поддержка в мобильных браузерах еще лучше, как вы можете видеть в этом резюме:
API геолокации широко поддерживается. Возможно, вам интересно, что вы можете сделать, если столкнулись с браузером, который не поддерживает API геолокации. Верьте или нет, для устранения этой проблемы существует несколько полифилов и прокладок. Наиболее заметными решениями являются тот, который был создан Мануэлем Бихом и легкой прокладкой, созданной Полом Ирришем.
Демонстрация
Теперь, когда мы знаем все аспекты API геолокации, пришло время увидеть его в действии. Эта демонстрация полностью функциональна и использует все методы и объекты, описанные в этой статье. Цель проста: каждый раз, когда выполняется запрос на обнаружение позиции устройства, данные о местоположении отображаются пользователю в виде списка.
Демонстрация содержит три кнопки, позволяющие выбрать операцию, которую вы хотите выполнить. Демонстрация также определяет, поддерживает ли браузер API геолокации или нет. Если это не так, вы увидите сообщение «API не поддерживается», и кнопки отключены.
Исходный код демонстрации показан ниже, но вы также можете играть с демо-версией API геолокации.
Заключение
В этой статье мы узнали о Geolocation API. Мы видели, что это такое, как и когда его использовать.
Gps api что это такое
В настройках GPS, есть 2 пункта:
COM-порты
Демо-трек
Операционная система (GPS API) — она была выбрана по определению прогой.
При выборе любого варианта, GPS на карте моё местонахождение не отобрадает, в чем может быть проблема?
Карта Ижевска и УР hexus 16-08-2008 04:07
gps api на моем аппарате врет метров на 20-30. даже если в настройках выставить правильный ком-порт в этом gps api.
узнайте, на каком ком-порте в вашем аппарате висит gps. На моем Asus P535 это COM2.
Вписать вручную в настройках навитела COM2/4800/nmea/агрессивный. И искать спутники у окна/на улице. opelomega 16-08-2008 11:53
узенал что нужно выбрать в настройках COM 4, но по прежнему не работает, какой протокол выбрать:
SiRF binary
NMEA-0183 (сейчас он стоит и не работает все равно)
Протокол Garmin opelomega 16-08-2008 11:56
подошёл к окну — всё работает coolsoft 20-08-2008 21:36
какая трагическая история. ак 28-08-2008 17:25
всплакнул 🙂 freelance 28-08-2008 21:17
понастольгировал. coolsoft 21-09-2008 21:36
внутри помещения можно разобраться и без GPS-координат.
ну а если никак в хитросплетении комнат не разобраться — ждите GPS2, обещали увеличить мощность сигнала со спутников в десятки раз — будет определяться и в тоннелях. Bartok 14-10-2008 13:15
Правильная настройка Навитела на димонде.
Настройки Диамонда — Настройка — система — External GPS:
вкладка программы: программный порт GPS — COM4
вкладка оборудование: Аппаратный порт GPS — нет (скорость, соответсвенно не важно)
вкладка доступ: автоматич. управление GPS — отмечено.
Настройки Навител: настройка GPS — GPS API
Все работает, позиционирование на уровне отдельного БТ устройства.
В Диамонде есть AGPS — в программах QuickGPS «загрузить» (грузит не много, порядка 5-10 кб). Загружает данные не со спутника, а берет данные через интернет о положении спутников.
«Холодный» старт — в помещении (около окна) 5 мин. На улице — 1-2 мин.
Проверено. Работает.
Bartok 14-10-2008 14:22
Настройка внешнего BT GPS приемника на Диамонде.
Включить BT устройство. Соединение со спутником можно не ждать, главное, что бы работал блютус.
Включить BT на диамонде и запустить поиск новых BT устройств. Когда устройство найдется, перейти к вкладке Порты COM. Создать исходящий порт. Выбрать обнаруженное устройство, выбрать порт, отличный от программного порта (обычно 4). Номер порта должен быть указан в спецификации к BT устройству. Например у нас порт COM6. Галочка безопасное подключение — отмечена.
Заходим в Навител (BT включено) — в настройках GPS выбираем порт COM6.
API — это как меню в ресторане. В меню представлен список блюд, которые Вы можете заказать, а также описание каждого блюда. Когда Вы укажете, какие пункты меню Вы хотите, кухня ресторана выполняет эту работу и предоставляет Вам готовые блюда. Вы точно не знаете, как ресторан готовит эту еду, и Вам это не нужно.
Это не идеальная метафора, поскольку разработчикам, возможно, придется предоставить свои собственные данные API для получения результатов, поэтому, возможно, это больше похоже на причудливый ресторан, где Вы можете предоставить некоторые из Ваших собственных ингредиентов, с которыми будет работать кухня.
API-интерфейсы позволяют разработчикам сэкономить время, воспользовавшись внедрением платформы, чтобы выполнить важную работу. Это помогает уменьшить количество разрабатываемого кода, а также помогает создавать согласованность между приложениями для одной и той же платформы. API-интерфейсы могут контролировать доступ к аппаратным и программным ресурсам.
Предположим, Вы хотите разработать приложение для iPhone. Операционная система Apple iOS предоставляет большое количество API-интерфейсов, как и любая другая операционная система, чтобы сделать это проще для Вас.
Например, если Вы хотите встроить веб-браузер для отображения одной или нескольких веб-страниц, Вам не нужно программировать собственный веб-браузер с нуля только для Вашего приложения. Вы
можете использовать WKWebView API для встраивания веб-браузера WebKit (Safari) в приложение.
Если Вы хотите снимать фотографии или видео с камеры iPhone, Вам не нужно писать свой собственный интерфейс камеры. Вы можете использовать API-интерфейс камеры для встраивания камеры iPhone в свое приложение. Если бы API не существовало, разработчикам приложений пришлось бы создавать собственное программное обеспечение камеры и интерпретировать входы аппаратного обеспечения камеры. Но разработчики операционной системы Apple сделали всю эту тяжелую работу, поэтому разработчики могут просто использовать API-интерфейс камеры для встраивания камеры, а затем продолжить написание своего приложения. И когда Apple улучшит API-интерфейс камеры, все приложения, которые используют его, автоматически воспользуются этим улучшением.
Это относится ко всем платформам. Например, Вы хотите создать диалоговое окно в Windows? Для этого есть API. Хотите поддерживать аутентификацию отпечатков пальцев на Android? Для этого есть API, так что Вам не нужно тестировать каждый датчик отпечатков пальцев любого производителя Android. Разработчикам не нужно повторно изобретать колесо снова и снова.
API-интерфейсы также используются для управления доступом к аппаратным устройствам и функциям программного обеспечения, на использование которых у приложения может не быть разрешения. Вот почему API часто играют большую роль в безопасности.
Однако, браузеры также предоставляют эту информацию через API, потому что можно контролировать доступ к ней. Когда веб-сайт хочет получить доступ к Вашему точному местоположению, единственный способ получить его — через API местоположения. И, когда веб-сайт пытается использовать его, Вы — пользователь — можете разрешить или отклонить этот запрос. Доступ к аппаратным ресурсам, таким как датчик GPS, возможен только через API, поэтому браузер может контролировать доступ к аппаратным средствам и ограничивать возможности приложений.
Этот же принцип используется для современных мобильных операционных систем, таких как iOS и Android, где мобильные приложения имеют разрешения, которые могут быть реализованы путем контроля доступа к API. Например, если разработчик пытается получить доступ к камере через API-интерфейс камеры, Вы можете отклонить запрос на разрешение, и приложение не будет иметь доступа к камере Вашего устройства.
Файловые системы, которые используют разрешения, как и в Windows, Mac и Linux, имеют те права, которые применяются API файловой системы. Типичное приложение не имеет прямого доступа к необработанному физическому жесткому диску. Вместо этого приложение должно получить доступ к файлам через API.
API также используются по другим причинам. Например, если Вы когда-либо видели объект Google Карты, встроенный на веб-сайт, этот веб-сайт использует API Карт Google для встраивания этой карты. Google предоставляет API-интерфейсы, подобные этим, для веб-разработчиков, которые затем могут использовать API-интерфейсы, чтобы собирать сложные объекты прямо на своем веб-сайте. Если таких API не существует, разработчикам, возможно, придется создавать свои собственные карты и предоставлять свои собственные данные карты, чтобы разместить небольшую интерактивную карту на веб-сайте.
И поскольку это API, Google может контролировать доступ к Картам Google на сторонних веб-сайтах, гарантируя, что они будут использовать его согласованным образом, а не пытаться беспорядочно внедрять фрейм, который показывает веб-сайт Google Maps, например.
Это относится ко многим различным онлайн-сервисам. Существуют API для запроса перевода текста из Google Translate или отображения комментариев Facebook или твитов из Twitter на веб-сайте.
Стандарт OAuth также определяет ряд API, которые позволяют Вам входить на сайт через другой сервис, например, использовать Ваши учетные записи Facebook, Google или Twitter для входа на новый веб-сайт без создания новой учетной записи пользователя только для этого сайта. API — это стандартные контракты, которые определяют, как разработчики взаимодействуют с сервисом, и вид продукции, которую разработчики должны ожидать получить.
Если Вы прочли эту статью, то у Вас будет лучшее представление о том, что такое API. В конечном итоге Вам не нужно знать, что такое API, если Вы не разработчик. Но, если Вы видите, что программная платформа или служба добавили новые API для различных аппаратных средств или услуг, разработчикам должно быть проще использовать такие функции.
В ероятно, вы видели термин «API». Операционная система, веб-браузер и обновления приложений часто объявляют о новых API для разработчиков. Но что такое API?
Интерфейс прикладного программирования
Термин API является аббревиатурой, и он означает «Интерфейс прикладного программирования».
API — это как меню в ресторане. В меню представлен список блюд, которые Вы можете заказать, а также описание каждого блюда. Когда Вы укажете, какие пункты меню Вы хотите, кухня ресторана выполняет эту работу и предоставляет Вам готовые блюда. Вы точно не знаете, как ресторан готовит эту еду, и Вам это не нужно.
Аналогично, API предоставляет множество операций, которые могут использовать разработчики, а также описание того, что они делают. Разработчику необязательно знать, как, например, создается операционная система и отображается диалоговое окно «Сохранить как». Им просто нужно знать, что он доступен для использования в приложении.
Это не идеальная метафора, поскольку разработчикам, возможно, придется предоставить свои собственные данные API для получения результатов, поэтому, возможно, это больше похоже на причудливый ресторан, где Вы можете предоставить некоторые из Ваших собственных ингредиентов, с которыми будет работать кухня.
API-интерфейсы позволяют разработчикам сэкономить время, воспользовавшись внедрением платформы, чтобы выполнить важную работу. Это помогает уменьшить количество разрабатываемого кода, а также помогает создавать согласованность между приложениями для одной и той же платформы. API-интерфейсы могут контролировать доступ к аппаратным и программным ресурсам.
API упрощают жизнь для разработчиков
Предположим, Вы хотите разработать приложение для iPhone. Операционная система Apple iOS предоставляет большое количество API-интерфейсов, как и любая другая операционная система, чтобы сделать это проще для Вас.
Например, если Вы хотите встроить веб-браузер для отображения одной или нескольких веб-страниц, Вам не нужно программировать собственный веб-браузер с нуля только для Вашего приложения. Вы
можете использовать WKWebView API для встраивания веб-браузера WebKit (Safari) в приложение.
Если Вы хотите снимать фотографии или видео с камеры iPhone, Вам не нужно писать свой собственный интерфейс камеры. Вы можете использовать API-интерфейс камеры для встраивания камеры iPhone в свое приложение. Если бы API не существовало, разработчикам приложений пришлось бы создавать собственное программное обеспечение камеры и интерпретировать входы аппаратного обеспечения камеры. Но разработчики операционной системы Apple сделали всю эту тяжелую работу, поэтому разработчики могут просто использовать API-интерфейс камеры для встраивания камеры, а затем продолжить написание своего приложения. И когда Apple улучшит API-интерфейс камеры, все приложения, которые используют его, автоматически воспользуются этим улучшением.
Это относится ко всем платформам. Например, Вы хотите создать диалоговое окно в Windows? Для этого есть API. Хотите поддерживать аутентификацию отпечатков пальцев на Android? Для этого есть API, так что Вам не нужно тестировать каждый датчик отпечатков пальцев любого производителя Android. Разработчикам не нужно повторно изобретать колесо снова и снова.
API-интерфейсы управляют доступом к ресурсам
API-интерфейсы также используются для управления доступом к аппаратным устройствам и функциям программного обеспечения, на использование которых у приложения может не быть разрешения. Вот почему API часто играют большую роль в безопасности.
Например, если Вы когда-либо посещали веб-сайт и видели в своем браузере сообщение о том, что веб-сайт запрашивает Ваше точное местоположение, этот веб-сайт пытается использовать API геолокации в Вашем веб-браузере. Веб-браузеры предоставляют API-интерфейсы, чтобы веб-разработчикам было легко получить доступ к Вашему местоположению — они могут просто спросить «где вы?», и браузер сделает тяжелую работу по доступу к GPS или соседним сетям Wi-Fi, чтобы найти Ваше физическое местоположение.
Однако, браузеры также предоставляют эту информацию через API, потому что можно контролировать доступ к ней. Когда веб-сайт хочет получить доступ к Вашему точному местоположению, единственный способ получить его — через API местоположения. И, когда веб-сайт пытается использовать его, Вы — пользователь — можете разрешить или отклонить этот запрос. Доступ к аппаратным ресурсам, таким как датчик GPS, возможен только через API, поэтому браузер может контролировать доступ к аппаратным средствам и ограничивать возможности приложений.
Этот же принцип используется для современных мобильных операционных систем, таких как iOS и Android, где мобильные приложения имеют разрешения, которые могут быть реализованы путем контроля доступа к API. Например, если разработчик пытается получить доступ к камере через API-интерфейс камеры, Вы можете отклонить запрос на разрешение, и приложение не будет иметь доступа к камере Вашего устройства.
Файловые системы, которые используют разрешения, как и в Windows, Mac и Linux, имеют те права, которые применяются API файловой системы. Типичное приложение не имеет прямого доступа к необработанному физическому жесткому диску. Вместо этого приложение должно получить доступ к файлам через API.
API используются для связи между службами
API также используются по другим причинам. Например, если Вы когда-либо видели объект Google Карты, встроенный на веб-сайт, этот веб-сайт использует API Карт Google для встраивания этой карты. Google предоставляет API-интерфейсы, подобные этим, для веб-разработчиков, которые затем могут использовать API-интерфейсы, чтобы собирать сложные объекты прямо на своем веб-сайте. Если таких API не существует, разработчикам, возможно, придется создавать свои собственные карты и предоставлять свои собственные данные карты, чтобы разместить небольшую интерактивную карту на веб-сайте.
И поскольку это API, Google может контролировать доступ к Картам Google на сторонних веб-сайтах, гарантируя, что они будут использовать его согласованным образом, а не пытаться беспорядочно внедрять фрейм, который показывает веб-сайт Google Maps, например.
Это относится ко многим различным онлайн-сервисам. Существуют API для запроса перевода текста из Google Translate или отображения комментариев Facebook или твитов из Twitter на веб-сайте.
Стандарт OAuth также определяет ряд API, которые позволяют Вам входить на сайт через другой сервис, например, использовать Ваши учетные записи Facebook, Google или Twitter для входа на новый веб-сайт без создания новой учетной записи пользователя только для этого сайта. API — это стандартные контракты, которые определяют, как разработчики взаимодействуют с сервисом, и вид продукции, которую разработчики должны ожидать получить.
Если Вы прочли эту статью, то у Вас будет лучшее представление о том, что такое API. В конечном итоге Вам не нужно знать, что такое API, если Вы не разработчик. Но, если Вы видите, что программная платформа или служба добавили новые API для различных аппаратных средств или услуг, разработчикам должно быть проще использовать такие функции.
В современных смартфонах навигационные модули встроены по умолчанию. В большинстве случаев они работают достаточно точно. Просто включите GPS в настройках, запустите приложение «Карты», и за считанные минуты программа определит, где вы находитесь. А если вы и не выключали GPS, то определение займёт и вовсе несколько секунд.
Но что если GPS не работает? Как тогда определить маршрут, скорость, ваше местонахождение? Не стоит спешить нести смартфон в ремонт: чаще всего это решается правильной настройкой телефона.
Вспомогательные сервисы
Кроме собственно спутникового приёмника, для определения вашего местонахождения порой очень полезны вспомогательные настройки. Как правило, они легко включаются на самом телефоне:
- A-GPS. Этот сервис подгружает данные о вашем местоположении из Интернета, используя данные сотовых сетей, к которым вы подключены. Конечно, точность у него гораздо ниже, но он ускоряет точное спутниковое определение. Wi-Fi. А вы не знали, что по данным сетей Wi-Fi тоже можно определить местонахождение? EPO. Впрочем, о нём – ниже.
Когда настройка необходима: курьёз Mediatek
Сегодня компания Mediatek (известная также как MTK) – один из лидеров в производстве мобильных процессоров. Даже такие гранды, как Sony, LG или HTC, сегодня создают смартфоны на процессорах MTK. Но было время, когда процессоры этой тайваньской компании использовались только в убогих клонах iPhone или двухсимочных «звонилках».
В 2012-2014 годах Mediatek выпускала вполне достойные чипсеты, однако в них постоянно наблюдалась проблема: неверная работа GPS. Спутники с такими устройствами ведут себя согласно цитате: «меня трудно найти, легко потерять…»
Всё дело было в настройках вспомогательного сервиса EPO. Этот сервис, разработанный Mediatek, помогает заранее рассчитывать орбиты навигационных спутников. Но вот беда: предустановленные по умолчанию в китайских телефонах данные EPO просчитаны для Азии и при использовании в Европе дают сбои!
Исправляется это в современных моделях легко. Напомним, все эти инструкции подходят только для смартфонов на процессорах MTK:
- Откройте меню настроек Andro > Зайдите в раздел «Время» и выставьте свой часовой пояс вручную. Это нужно для отказа от сетевого определения местоположения для времени. Зайдите в раздел «Моё местоположение», разрешите системе доступ к геоданным, поставьте галочки в пунктах «По спутникам GPS» и «По координатам сети». С помощью файлового менеджера зайдите в корневой каталог памяти и удалите файл GPS.log и другие файлы с сочетанием GPS в названии. Не факт, что они там есть. Скачайте и установите приложение MTK Engineering Mode Start, позволяющую войти в инженерное меню смартфона (https://play.google.com/store/apps/details? >
- Выйдите на открытое место с хорошей видимостью. Вокруг не должно быть высотных зданий или других объектов, мешающих прямому обзору неба. На смартфоне должен быть включен Интернет. Запустите приложение, выберите пункт MTK Settings, в нём – вкладку Location, в ней — пункт EPO. Как вы уже догадались, мы обновляем данные EPO для СВОЕГО часового пояса и времени! Нажмите кнопку EPO (Download). Загрузка должна произойти за считанные секунды даже при слабом соединении. Вернитесь в раздел Location, выберите вкладку YGPS. Во вкладке Information последовательно нажмите кнопки Cold, Warm, Hot и Full. C их помощью обновляется информация о местоположении спутников на орбите, поэтому каждый раз придётся дожидаться загрузки данных. К счастью, это дело секунд.
- В той же вкладке нажмите кнопку AGPS Restart. Вспомогательный сервис AGPS теперь будет учитывать уже загруженные данные и точнее определять положение спутников. Перейдите в соседнюю вкладку NMEA LOG и нажмите кнопку Start. После этого перейдите во вкладку Satellites. Вы увидите, как система обнаруживает спутники. Этот процесс должен занять 15-20 минут, в его ходе значки спутников будут из красных становиться зелёными. Следите, чтобы дисплей в это время не отключался, а лучше отключите спящий режим вообще. Когда все (или большинство) спутники «позеленеют», вернитесь во вкладку NMEA Log и нажмите Stop. Перезагрузите смартфон.
Да, это далеко не самая простая процедура. В зависимости от версии процессора MTK (мы описали действия для платформы MT6592) процедура может несколько отличаться, но по сути остаётся той же. Но после этих действий GPS на смартфоне будет работать замечательно.









