Как узнать координаты 2гис

Простая публикация геоданных на собственной карте на базе 2ГИС

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

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

Для реализации задумки была выбрана связка Google Docs и API картографического сервиса 2ГИС. Решение получилось действительно простым, в духе знаменитых «30 строк» 🙂

Шаг 1. Заводим таблицу для данных.

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

В качестве тестовых данных я взял адреса домов, относящихся к двум небольшим избирательным участкам в городе Костроме. Номер участка, улица, номер дома и число квартир.

Использование в качестве источника данных Google Drive снимает множество проблем с совместной работой специалистов разной степени подготовки и с оперативным обновлением данных.

Теперь таблицу нужно опубликовать. Для этого идем в меню «Файл — Опубликовать в интернете». В появившемся окне выбираем «Начать публикацию», в нижней части — выбираем «CSV (значения, разделенные запятыми)» и получаем ссылку на наш лист таблицы в виде CSV.

Шаг 2. Готовим данные для карты.

Напишем несложный скрипт на PHP и назовем его getMapData.php:

Тут нужно заметить, что скорее всего при первом запуске вы получите ошибку «Warning: fopen(): Unable to find the wrapper „https“». Это связано с тем, что в дефолтной установке PHP не включен модуль OpenSSL. Найдите в файле php.ini строчку
;extension=php_openssl.so и раскомментируйте ее, убрав точку с запятой. Обычного этого достаточно.

Теперь перед нами стоит следующая задача. Нужно адреса геообъектов каким-то образом перевести в координаты на карте. Для этого у 2ГИС есть соответствующее API: api.2gis.ru/doc/geo/search

Вот простейший код для работы с API геокодера:

Обратите внимание на странную строчку sleep(1); в коде. Дело в том, что я пользуюсь тестовым доступом к API 2GIS, а при нем частота запросов ограничена одним в секунду. После получения полного доступа эту строчку нужно, разумеется, убрать.

Ну и не забываем опять же кэшировать полученные данные, чтобы не создавать 2ГИС лишнюю нагрузку, а себе — лишнее время работы скрипта.

Шаг 3. Показываем карту.

Тут я приведу полный код страницы. Ничего сложного в нем нет, тем более что у 2ГИС есть неплохая документация, ее можно прочитать по адресу api.2gis.ru/doc/maps/info

На этом, собственно, всё. Мы получили простейшую, но вполне функциональную систему, которая показывает на карте объекты согласно списку, ведущемуся в Google Docs. Вот такой mash-up 🙂

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

Источник

Памятка по работе с GPS координатами

Информация по работе с картами и GPS координатами

В играх ENCOUNTER зачастую используются (загадываются) GPS координаты. В связи с множеством вопросов и несостыковок, различными вариантами написания и использования и написана эта статья.

Формат координат

Разное программное обеспечение (навигаторы, 2ГИС и др.) используют различный формат координат.

Вот действующие на сегодняшний день форматы:

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

Для того, чтобы определить место по заданным координатам, необходимо ввести их в поле поиска сверху и нажать «найти».

Особенности:

2) Если формат координат содержит градусы, минуты и секунды (сначала так же идет широта, затем долгота). Формат следующий: 57°37′58.39″, 39°53′22.97″

3) В ответ на поиск координат, Яндекс карты ставят на место синий маячок. Раньше был еще и зеленый маячок, который отображал точное положение на местности. Синий маячок притягивается к ближайшему месту на карте. В условиях плохой детализации, погрешность синего маячка относительно реального положения вещей может составлять от нескольких метров до нескольких километров. Авторам настоятельно рекомендуется тестировать загаданные координаты на предмет указаний синего маячка.

По аналогии с Яндекс Картами работает сервис Космоснимки, однако маячок координат там более точно указывает на необходимое место. Детализация загорода довольно низкая, но для города вполне терпимо.

Особенности работы с Google Maps (https://maps.google.com/)

Google Maps пожалуй наиболее удобный сервис для определения местоположения по координатам.

Формат координат ничем не отличается от такового с Яндекс Картами. Принимает и десятичный и градусы с минутами и секундами.

Принципиальное отличие: при вводе координат в строку поиска создается 2 маячка. Предназначение красного маячка непонятно. Зеленая стрелочка показывает точное место по загаданной координате. При этом погрешность красного маячка в условиях низкой детализации района карты может составлять десятки километров.

Для того чтобы в Google Maps узнать координаты места, необходимо ткнуть в это место левой кнопкой мыши и в контекстном меню выбрать пункт «Что здесь находится?». В строке поиска будут актуальные координаты необходимой точки, а сама точка на карте будет отмечена зеленым маркером.

Особенности работы с 2ГИС (http://yaroslavl.2gis.ru/)

Нормального поиска по координатам в 2ГИС пока нет, но определить их или найти место по координатам все-таки можно.

Итак, для того чтобы определить координаты места на карте необходимо:

1) Ткнуть правой кнопкой мыши в интересующее место на карте

2) Выбрать в контекстном меню «Создать точку (заметку)»

3) В открывшемся окошке поставить галочку «расширенные настройки»

4) Окошко увеличится и Вы увидите вкладку «Координаты», ее нужно открыть

5) Перед Вами координаты Вашей точки.

Скриншот для примера:

Для того, чтобы найти место по данным координатам в 2ГИС необходимо:

1) Ткнуть в любое место на карте левой кнопкой мыши.

2) Выбрать в контекстном меню «Создать точку (заметку)»

3) В открывшемся окошке поставить галочку «расширенные настройки»

4) В открывшемся окне с координатами поменять цифры координат на желаемые.

5) Нажать «Сохранить»

6) В левом меню в выпадающем списке сверху выбрать «дополнительные слои»

7) Выбрать созданную заметку, чтобы она отобразилась на карте.

Навигационное ПО (СитиГИД, Навител и другие)

Большинство навигационного ПО поддерживают поиск в различных форматах координат.

Для СитиГИД (на примере 7 версии) поиск по координатам происходит по следующей схеме:

2) Откроется вот такое окно:

4) После ввода координат, в окошке с картой откроется загаданная точка. Тут можно оценить как далеко ехать и правильно ли разгадано задание.

5) Нажмите кнопку «Поехали» и навигатор отведет Вас до точки в соответствии с загруженной картой.

Для Navitel Navigator

Так же поддерживается большинство форматов координат. Формат координат устанавливается в настройках программы заблаговременно. Поиск по координатам ничем не отличается от аналогичного в СитиГИД:

Источник

GPS координаты на карте — поиск места

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

Интерпретация формата

Большинство современных онлайн-карт представляют значение широты и долготы в виде десятичных дробей – в формате «градусы, доли градусов». После запятой указывается 5-6 символов для точности определения.

Обратите внимание на наличие отрицательного значения. В данном случае оно интерпретируется как:

Также можно встретить записи координат в формате «градусы, минуты, секунды» (пример – 41°24’12.2″С 2°10’26.5″В) и «градусы, минуты и доли минут» (55°38.288’С 37°28.816’В).

Как узнать текущие координаты

Определение параметров текущего местоположения на любом устройстве осуществляется в рамках трех основных этапов:

Рассмотрим, как уточнить GPS координаты на онлайн-картах на компьютере и встроенных в смартфоны навигаторах.

На компьютере

Чтобы определить координаты по текущему или иному адресу на десктопном устройстве:

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

На Android

Для определения значений широты и долготы точки на Android:

Данные координат также отобразятся в строке поиска после выбора точного адреса.

На iPhone

Чтобы на мобильном устройстве с ОС IOS определить реальные координаты GPS с помощью встроенного навигатора:

На Айфоне значения широты и долготы места уточняются в отдельных графах.

Как определить координаты на онлайн-картах

Интерфейс онлайн-навигаторов может значительно различаться, что создает трудности в процессе определение точных координат нужного места. Рассмотрим несколько популярных карт и найдем соответствующий раздел.

Яндекс Карты

Чтобы узнать в Яндекс Картах координаты отметки в онлайн-версии через браузер, кликните на искомую точку. Слева появится вкладка с подробной информацией об организации – долгота, широта указываются ниже наименования и адреса места. Если координаты не указываются, попробуйте кликнуть на соседнее здание.

Для уточнения координат по нужному месту удерживайте палец на одной точке карты, затем нажмите на ссылку «Что здесь?». Кликните на соответствующую строку – значение автоматически перенесется в буфер обмена.

В десктопной версии 2ГИС поиск точки по значениям координат происходит аналогичным Яндекс Картам способом.

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

Рекомендуется ставить курсор не на зданиях, а на ближайшем свободном пространстве – в противном случае широта и долгота не будут размещена в блоке снизу.

Навител

Вычислить координаты GPS в мобильном навигаторе Navitel можно следующим образом:

Готово – в новой вкладке будут указаны точные значения широты и долготы.

Как найти место по заданным координатам

Чтобы найти любое место по координатам GPS на онлайн-карте, в поисковой строке вместо адреса вставьте скопированное значение. Навигатор автоматически установит курсор точно на исходной точке.

Поиск по координатам GPS в картах подобных Navitel осуществляется следующим образом:

Перейдите по ссылке «Маршрут» или «Поехали», чтобы создать путь от текущей геопозиции до указанной точки.

Передача данных пользователю

Если требуется найти местоположение другому человеку, можно осуществить перевод данных GPS координат. Эта возможность предусмотрена в большинстве популярных онлайн-навигаторах. Для этого откройте параметры онлайн-карты и выберите пункт «Поделиться», выберите способ передачи информации и подтвердите действие.

В некоторых картах функция отображается, если кликнуть на конкретную точку.

Поиск с помощью компаса

Если в качестве навигатора используется стандартный ручной компас, повернитесь так, чтобы стрелка показывала на север – сопоставьте с севером бумажной карты. С помощью карты находим текущую геопозицию и требуемое место.

В каждом углу отмечаются координаты края. Отсчитайте с помощью делений искомые значения широты и долготы.

Сейчас редко возникает потребность в поиске места с помощью значений координат GPS. Однако такой способ вполне актуален, если требуется передать свое или определить местоположение на трассе или прочих местах, которые невозможно вычислить по адресу.

Источник

Приложение не может определить местоположение или определяет его неправильно

Не определяет вообще

Чтобы 2ГИС мог определить местоположение, устройство должно быть либо подключено к интернету либо использовать GPS. Если вы находитесь в режиме офлайн, а сигнал GPS плохой, определить ваше местоположение будет невозможно.

Убедитесь, что в настройках мобильного устройства включено разрешение на доступ к информации о вашей геопозиции. Зайдите в настройки приложения → «Разрешения» → включите тумблер «Местоположение».

Убедитесь, что в настройках телефона включено определение местоположения по GPS и сотовым вышкам. Зайдите в настройки устройства → «Геоданные» и выберите «Включено».

Проверьте, установлена ли на устройстве последняя версия Google Play Services.

Определяет неточно

Иногда скорость определения местоположения зависит от устройства, а не от приложения. Если вы долго не пользовались GPS, поиск геолокации может занять больше времени, чем обычно.

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

Источник

Web-геосервисы. Обзор современных решений

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

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

Также рассчитываю на участие комментаторов — если заметите в обзоре неточность в описании, отсутствие вашего хорошего сервиса или вам просто есть что добавить к уже написанному — пишите в комментариях, я буду собирать всё в основной текст, чтобы на будущее всегда иметь под рукой хороший список инструментов на все случаи жизни.

Оглавление

Отображение карт на сайте

Очень популярная задача — это отображение на сайте онлайн-карт. Например, чтобы показать, в каком точно месте на карте находится ваш офис. Или где можно забрать вещь, которую продает автор объявления.

Для отображения карт используются два основных вида API:

Javascript API

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

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

Javascript API Яндекс.Карт

Javascript API Google Maps

2ГИС API

Azure Maps

MapBox

Static API

Статичное API может быть использовано там, где вам нужно показать просто картинку карты, без интерактива. Например, вы хотите приложить карту к электронному письму, или дать возможность пользователю распечатать схему проезда к вам. Ну или ваш дизайнер нарисовал макет, в котором вместо фона используется карта — грузить для такой задачи полноценные JS карты выглядит избыточным. Также статичную картинку можно использовать как превью для ускорения загрузки страницы у пользователя — а по клику делать её интерактивной.

Static API Яндекс.Карт

Static API Google maps

2ГИС Static API

MapBox

Геокодирование

Геокодирование — процесс, который позволяет узнать координаты объекта по его адресу. Ну или обратное геокодирование — по координатам узнать, что за гео-объект там находится. Фактически все сервисы геокодирования работают с адресами, введенными в произвольном формате, заодно приводя их к своему стандарту. Полностью бесплатных сервисов геокодирования на рынке в данный момент я не нашел.

Типичные применения геокодирования — отобразить на карте введенный пользователем адрес, или наоборот (обратное) — пользователь поставил на карте метку, нужно её превратить в адрес.

Геокодер Яндекс.Карт

«Подсказки» от DaData

Google Maps Geocoding API

GraphHopper

MapBox

OpenStreetMaps Nominatim

Разбор и автодополнение адресов

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

В принципе, с этой задачей без проблем справляются все сервисы геокодинга из списка выше. При прямом геокодинге кроме координат они также возвращают и структурированную информацию о найденном гео-объекте.

Отдельно стоит отметить сервис «стандартизация» от DaData — по адресам из России они возвращают еще массу разной полезной информации, по 10 копеек за каждый адрес:
dadata.ru/api/clean/address

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

Определение района в рамках города

Для определения района в рамках города я для себя нашел на данный момент два решения. Оба работают только для России.

Первое, и самое очевидное — DaData. Уже много было написано об этом сервисе, это действительно хороший сервис для работы с российскими адресами (и это не реклама). Попробуйте сами, убедитесь.

Если не хотите зависеть от стороннего сервиса — есть другое решение, которое я применял и продолжаю применять до сих пор. Это определение района по коду ОКАТО адреса. У каждого адреса в рамках России есть свой код ОКАТО — 11 цифр. Из них первые 5-8, в зависимости от города, однозначно указывают на район.

Я для тех городов, которые мне нужны, просто составил базу кодов ОКАТО для районов, получился примерно такой массив:

Следующий вопрос — как узнать код ОКАТО адреса? DaData возвращает его в рамках своих сервисов «Подсказки» и «Стандартизация». Есть сайт окато-октмо.рф который по адресу показывает код ОКАТО, используя ту же дадату. Наша задача — самостоятельно узнать код ОКАТО по адресу, не завися ни от какого сервиса.

Для этого нам нужно скачать свежую базу данных ФИАС и настроить поиск по ней. На хабре уже есть статья с примером как импортировать базу ФИАС в MSSQL. В общем, настраиваете поиск по ФИАСУ, находите там нужный вам адрес, узнаете его код ОКАТО, по коду ОКАТО из списков районов узнаете район — всё, задача решена.

Если не хотите париться с загрузкой 60 гигабайт XML файлов в свою базу, есть более дешевый, но и менее функциональный, чем dadata, сервис, который позволяет работать с базой ФИАС:
kladr-api.ru/docs

Поиск ближайших станций метро

Нужная функция, особенно для жителей Москвы, когда вам нужно по адресу найти ближайшие к нему станции метро. Для этой задачи в данный момент я знаю два решения:

Яндекс Геокодер

Сначала нужно узнать координаты адреса. Потом, как при обратном геокодировании, передаем в качестве параметров запроса эти координаты, и вид возвращаемого топонима kind=metro.
Отдельным параметром задаются размеры области, в пределах которой надо искать ближайшую станцию. Опытным путём я подобрал значения от 0,02 до 0,05 градусов в зависимости от города (в Москве радиус 2 километра от метро еще считается шаговой доступностью, а в Казани расстояние между станциями 1,5 километра).

Также есть проблема у такого метода, что иногда ближайшее по координатам метро не всегда ближайшее фактически (например находится на другом берегу реки, или вроде того). Определять ближайшее по доступности метро можно только с помощью сервисов построения маршрутов и матриц расстояний, о них будет в статье дальше. Для грубого определения ближайшей станции — геокодер яндекса вполне подходит, и дает выполнить до 25000 запросов в сутки бесплатно.

DaData

Поиск организаций

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

Яндекс поиск по организациям

Google Places Api

Определение местоположения пользователя по IP

Частая задача в вебе — понять, из какого города на ваш сайт пришел посетитель. Для этой задачи есть решения в виде online-сервисов или самостоятельных решений для тех, кто не хочет зависеть от сторонних сервисов.

Онлайн сервис для определения города по IP — тут я могу посоветовать (для России) снова DaData: dadata.ru/api/detect_address_by_ip
Лимит — 10 000 запросов в сутки. Если ваша посещаемость превышает 10 000 уников в сутки, есть смысл рассмотреть решения, которые устанавливаются на ваш сервер. Подробно о них можно почитать в обзоре от DaData, как они выбирали, что использовать.

Вкратце продублирую информацию:
IpGeoBase — раньше был неплохой сайт, который ежедневно обновлялся и давал базу ip адресов и соответствующих им городов в понятном машинно-читаемом формате, легко импортируемом в любую базу данных. К сожалению, перестал обновляться в 2017 году.
ipgeobase.ru

SypexGeo — обновляется до сих пор, поставляется в виде скрипта php и базы данных к нему в собственном формате. Работает быстро, определяет хорошо
sypexgeo.net/ru/download

MaxMind предлагает скачать бесплатные базы со сниженной точностью и отдельно API к ним на различных языках программирования. Более точные базы доступны в рамках платных продуктов.
dev.maxmind.com/geoip/geoip2/geolite2

Определение местоположения пользователя по координатам

Задача схожа с задачей обратного геокодирования, с небольшими различиями.

Иногда нам нужно определить местоположение пользователя, когда мы точно знаем его координаты (например получили их используя датчики GPS устройства или Geolocation API в браузере). Тут есть два варианта — обратное геокодирование нам возвращает название того места, где находится пользователь. Но что произойдет, если пользователь находится где-то на трассе между городами, или в пригороде или просто в чистом поле и хочет посмотреть объявления о продаже участков на этом поле? Не всегда обратный геокодер с этим справится.

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

Построение маршрута

Иногда бывает нужно построить маршрут от одной точки до другой. Например, составить схему проезда от местоположения пользователя до вашего офиса. Платные решения есть от Яндекса и от Гугла — основное их отличие в том, что Яндекс продает подписку с годовой оплатой, а гугл тарифицирует запросы поштучно и списывает деньги с карты раз в месяц по итогу месяца.
Также у гугла есть премиум-подписка, которая дает некоторые дополнительные функции (например увеличение максимального размера картинки Static API) и депозит на лимиты. Также есть решение от 2Гис — самое дорогое в пересчете на 1 построенный маршрут.

Благодаря 3aiats было найдено бесплатное Open Source решение —

GraphHopper

MapBox (спасибо ne_kotin)

Яндекс

Google

Главное отличие от яндекса — тарификация по принципу Pay-as-you-go, то есть за каждый запрос. Для небольших объемов тарифы будут выгоднее у Гугла, для больших — у Яндекса.
Также у гугла нет ограничения по странам, где они строят маршруты.

Google Directions Api

Google Distance Matrix API

Google Roads API

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

WikiRoutes

Azure Maps

2Гис Логистика

Сервисы для оптимизации логистики

Заключение

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

Многие сервисы по мере роста популярности переходят на всё более жесткие системы монетизации — как бесплатные когда-то карты гугла стали полностью платными, так же и Яндекс постепенно к этому идет.

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

Вероятно, в обзоре я не указал некоторые отличные сервисы, которыми вы пользуетесь, либо вы пользовались сервисами из обзора и вам есть что добавить к уже написанному — пишите в комментариях, буду добавлять в текст.

Источник

Читайте также:  Если я улыбаюсь это не значит что у меня все хорошо
Обучающий проект