Добавляем поиск по адресу на Яндекс.Карту

В заметках ранее мы используя API Яндекс.Карт создали карту с элементами управления и добавили на нее метку.

В этой заметке мы добавим к нашей карте возможность поиска по адресу.

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

Вот этот код:

<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”><html xmlns=”http://www.w3.org/1999/xhtml”>

<head>

<meta http-equiv=”Content-Type” content=”text/html” />

<script src=”http://api-maps.yandex.ru/1.0/?key=

AKgqHEkBAAAA-WzMYwIAeAeamm8ETZZZpdfp2R07eIuGyX4AAAAAAAAAAACjUCDoHIHZJ2pcl5mSL1zWVp2Myw==”

type=”text/javascript”></script><script type=”text/javascript” charset=”utf-8?>

var map;

function init () {

map = new YMaps.Map( document.getElementById(”YMapsID”) );

map.setCenter(new YMaps.GeoPoint(44.0,56.32811), 13,

YMaps.MapType.MAP);map.addControl(new YMaps.TypeControl());

map.addControl(new YMaps.ToolBar());

map.addControl(new YMaps.Zoom());

map.addControl(new YMaps.MiniMap());

map.addControl(new YMaps.ScaleLine());}

</script>

</head>

 

<body onload=”init();”><div id=”YMapsID” style=”height:400px; width:600px;”></div></body>

</html>

 

Для реализации поиска по адресу на карте необходимо к нашему примеру сделать следующие добавления.

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

Здесь я употребил слово геокодер. Что это такое?

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

Процесс работы с геокодером называется геокодированием.

Для работы с геокодером в API Яндекс.Карт используются специальные объекты  YMaps.Geocoder и YMaps.GeocoderResult. Они позволяют отправлять запросы геокодеру, получать информацию о статусе и результате процесса геокодирования и получать результаты геокодирования в виде меток карты.

Подробнее о геокодировании можно узнать из руководства разработчика по адресу http://api.yandex.ru/maps/jsapi/doc/dg/concepts/geocoder.xml

И так мы добавляем в наш пример форму поиска.

В раздел BODY перед картой добавляем следующий код:

<form action=»#» onsubmit=»showAddress(this.address.value);return false;»><p><input type=»text» id=»address» style=»width:525px;» value=»Нижний Новгород» />

<input type=»submit» value=»Искать» />

</p>

</form>

 

В раздел HEAD после функции init следующую функцию:

function showAddress (value) {map.removeOverlay(geoResult);var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()});

YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {

if (this.length()) {

geoResult = this.get(0);

map.addOverlay(geoResult);

map.setBounds(geoResult.getBounds());

}else {

alert(«Ничего не найдено»)

}

});

YMaps.Events.observe(geocoder, geocoder.Events.Fault,

function (error) {alert(«Произошла ошибка: » + error.message)});

}

 

Форма уже содержит значение Нижний Новгород для поиска.

В нее необходимо ввести искомый адрес.

Введенный адрес (значение переменной value) передается функции showAddress.

В ней сначала мы удаляем все оверлеи (объект, привязанный по географическим координатам, который отображается поверх карты, в частности открытый балун) строка map.removeOverlay(geoResult);

Затем в строке var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()});

запускаем процесс геокодирования.

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

Иначе выводим сообщение: «Ничего не найдено».

Последние две строки функции служат для вывода сообщения об ошибке геокодирования.

Загрузим наш пример в браузере и проверим его работу.

 

Пример Яндекс.Карты с формой поиска

 

Найдем для примера следующий адрес: Нижний Новгород, ул. Белинского, 59

Введем его в строку поиска и нажмем Найти.

Получим найденный результат.

 

Пример Яндекс.Карты - Результат поиска

 

Посмотреть пример в действии и полный код можно здесь.

На странице к созданной функции можно обращаться используя ссылку, например,

<a href=»javascript:showAddress(‘Нижний Новгород, ул. Белинского, 59’)»> Нижний Новгород, ул. Белинского, 59</a>



Добавляем поиск по адресу на Яндекс.Карту - Генератор расширений Joomla и многое другое на нашем сайте посвященном работе расширений, компонентов, модулей, плагинов для линейки Joomla. Отправляйте ссылку на страницу своим друзьям и в социальные сети воспользовавшись графическими иконками выше.

Блог

Календарь приёма объявлений

Небольшой пример из повседневной практики. Организация меняет реквизиты, и они вступят в силу через  пару недель. На сайте идет приём объявлений и объявления принимаются на несколько месяцев в...

Дырка в com_content

Сегодня у товарища, сайт которого находится на старой  Joomla 1.0.3, была сильная нагрузка на сервере, просматривая логи обнаружил не вежливый запрос такого порядка: http://сайт/index2...

Лечим вирус на сайте

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

Troj/JSRedir-MH

Снова грянул гром зарежения сайтов новым вирусом  Troj/JSRedir-MH.  И так в коротко по вирусу Troj/JSRedir-MH. Вирус или троян куда интереснее чем свои предшествиники, тепер...

Доработка расширения для рассылки Send Email JK

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

Привет Ie 10 регулярка

И вот и мне пришлось столкнулся с проблемами перехода на win 8 в придачу с ie 10, некоторых постоянных пользователей моих сайтов. На многих сайтах  имеющих раздел по приёму объявлений, использ...

Kunena заменяем ссылку на профиль пользователя

Всем привет, снова снова кунена, получил задание на допиливание популярного форума Kunena, сегодня потребовалось поменять ссылку на профиль пользователя. Это связано с тем, что на сайте стоит социа...

Работает на Kunena - зачем на каждой странице?

  Все у кого стоит форум kunena мешает надпись с двумя ссылкам внизу форума "Работает на Kunena". Сея надпись висит на каждой странице форма, а также страница разработчиков содержит множество вн...

Kunena избавимся от лишних quote

Для тех кто действительно делает сайт для людей, моя следующая заметка. Расскажу вам, как избавиться от лишних quote в постах на форуме kunena. У меня несколько тематических сайтов с нормальной посеща...

Kunena решаем проблему с пропажей аватаров

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

Джомлавикам

Обработка параметров расширений joomla

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

Кunena крамсаем шаблон

1. В папке \components\com_kunena\template\ваш_шаблон\ находим файл template.xml и вставляем в него такой кусок (чтобы была возможность выбора показывать это поле или нет): <param name="l...

Подключить свои классы и методы в Joomla?

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

3 новых полезных класса в Joomla 2.5

В платформе Joomla 11.3 разработчики добавлил несколько полезных новых классов для разработчиков. Рассмотрю некоторый из них - JGrid (для построения HTML таблиц), JWebClient (для получения информац...

Репозиторий файлов на Joomla средствами Apache

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