Простая публикация геоданных на собственной карте на базе 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 🙂
Ссылку на получившуюся карту не даю, потому что опасаюсь за сервер, который легко может лечь под хабраэффектом. Но картинку не могу не вставить:
В играх 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
Так же поддерживается большинство форматов координат. Формат координат устанавливается в настройках программы заблаговременно. Поиск по координатам ничем не отличается от аналогичного в СитиГИД:
Конструктор карт — бесплатный инструмент для компаний, журналистов и блогеров. Помогает создавать карты со своей разметкой: точками, маршрутами, выделенными областями. Такие карты можно добавить на любой сайт.
Что есть в конструкторе
Отметки. Указывают на конкретное место, адрес или компанию. Расставляйте точки вручную или привязывайте к конкретному адресу. Чтобы привязать точку к адресу, введите улицу и дом, название организации или объекта в поисковой строке.
Линии. Пригодятся, чтобы показать маршрут забега, перекрытые улицы, дорогу от остановки до офиса.
Фигуры: квадраты, круги, многоугольники. Помогают выделить на карте небольшой участок или целый район.
Как добавить объекты на карту
Выберите отметку, линию или фигуру и поместите её в нужное место.
Цвет, толщина линии и другие свойства фигур настраиваются в левой панели.
Точкам, линиям и фигурам можно добавить описание — пользователи увидят его, когда кликнут на объект. Если знаете разметку Markdown и HTML, вставляйте в описания картинки.
Отметкам можно добавить подпись, которую всегда видно на карте.
Все отметки, линии и фигуры, которые вы нанесёте на карту, появятся в левой панели. Нажмите на объект в списке, чтобы выделить его на карте. И наоборот: выберите объект на карте, чтобы выделить в списке.
Если добавить объекту описание, оно появится в списке. Так проще отличить одну точку или фигуру от другой.
Площадные объекты могут накладываться друг на друга. Если кликнете по смежной области, то выберете тот объект, который находится на более высоком слое. Чтобы изменить приоритет объектов, перемещайте их в списке вверх и вниз.
Чтобы удалить объект, найдите его в списке и нажмите на крестик.
Как настроить размер карты
Ширина и высота карты настраиваются на верхней панели. Высоту всегда указывают в пикселях. Ширину можно выбрать по размеру экрана.
Как добавить карту на свой сайт
Нажмите на кнопку «Получить код» под картой, скопируйте код и вставьте на свою страничку. Если у сайта есть админка, которая поддерживает HTML, можно сделать это через неё. Если админки нет, добавьте карту прямо в код сайта.
Если вы пользуетесь онлайн-версией 2ГИС или мобильным приложением, то для поиска фирм, мест и адресов достаточно указать интересующий вас запрос в поисковой строке и нажать «Найти» или клавишу «Ввод».
Если вы пользуетесь ПК-версией, перейдите к вопросу «Как найти дом или организацию в ПК-версии?»
В 2ГИС можно найти:
организации — по названию, сферам деятельности, адресу сайта или номеру телефона, названию товара или услуги, через адрес расположения;
здания и другие места — по адресам (Ленина 1), названиям (Краеведческий музей, Памятник любви) или типу мест (спортивные площадки, парки, туалеты);
маршруты общественного транспорта — по номеру маршрута или через название остановки.
Если для вашего поискового запроса существует несколько совпадений, объекты будут отсортированы между собой по популярности.
Поиск 2ГИС умеет:
понимать запросы с опечатками и в неправильной раскладке;
находить компании на конкретной улице, например, «автосервис на жуковского»;
находить объекты по их народным названиям, например «тёщин язык» в Новосибирске или «пять углов» в Санкт-Петербурге;
обрабатывать сложные запросы, например, «ресторан итальянской кухни на тверской круглосуточно»;
находить компании и места, в названиях которых есть дефисы, апострофы и амперсанды, когда в поисковом запросе этих символов нет, например, по запросу «hm» 2ГИС найдет магазин H&M.
Карта поможет найти координаты на карте, адрес, место, узнать по широте и долготе, как найти на карте точку, место, адрес, город, улицу, страну онлайн, узнать координаты маршрута и как проехать доехать до места. Узнаете: Как посмотреть широту и долготу на картах, Как найти место по широте и долготе. Поиск по координатам. Просто вводите данные по широте и долготе сервис отобразит точку на карте. Также кликая по карте на нужном месте сервис определит координаты места клика на карте. Найти по координатам на карте Москвы, Санкт-Петербурга, Новосибирска, Екатеринбурга, Нижнего Новгорода, Казани, Челябинска, Омска, Самары, Ростова-на-Дону, Уфы, Красноярска, Перми, Воронежа, Волгограда, Саратова, Краснодара, Тольятти, Тюмени, Ижевска, Барнаула, Иркутска, Ульяновска, Хабаровска, Владивостока, Ярославля, Махачкалы, Томска, Оренбурга, Новокузнецка, Кемерово, Астрахани, Рязани, Набережные Челны, Пензы, Липецка, Кирова, Тулы, Чебоксар, Калининграда, Курска, Улан-Удэ, Ставрополя, Магнитогорска, Сочи, Белгорода, Нижнего Тагила, Владимира, Архангельска, Калуги, Сургута, Читы, Грозного, Стерлитамака, Костромы, Петрозаводска, Нижневартовска, Йошкар-Олы, Новороссийска
Как найти место по координатам: вводите свои координаты на в поля «Широта» и «Долгота» и кликаете по кнопке «Найти Место». Если знаете место на карте и наборот хотите определить и найти координаты просто кликайте по карте и в поле «Координаты метки Вы увидите соотвествующие координаты вашего клика»