Клуб API Карт

Поиск + API Яндекс.Карт

evgeniygrishakov
16 сентября 2010, 11:28

Добрый день всем. Есть сайт, при входе на страницу которого, пользователь вводит имя объекта в строку поиска, и на сайт выводится контент из MySql по запрашиваемому объекту (это все работает). На этой же странице я разместил API Яндекс.Карт. Необходимо добиться того, чтобы вместе с контентом на карте отображалось место. Ну например пользователь ввел город "Москва" вывелась информация по городу Москва и заодно на карте появилась собственно сама Москва. Как мне это сделать? Вот скрипт поиска (он уже работает):

  1. <?php
  2. include("config.php");
  3. $search = mysql_real_escape_string($_POST['search']);
  4. $res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'", $db);
  5. if (!$res) {
  6.     echo "Запрос не прошел."; exit(mysql_error());
  7. }
  8. $myrow = mysql_fetch_array($res);
  9. ?>

Вот пример того, как поиск выводит данные на сайт:

  1. <form action="" method=post>
  2. <input id="inputtext" type="text" name="search"/>
  3. <input id="inputbut" type="image" src="images/search.gif" name="submit">
  4. </form>

Вот стандартный скрипт взятый с сайта http://api.yandex.ru для вставки карты:

  1. <script src="http://api-maps.yandex.ru/1.1/index.xml?key=Здесь_мой_ключь_сгенерированный яндексом для меня_показать_не_могу"
  2.         type="text/javascript"></script>
  3.     <script type="text/javascript">
  4.        window.onload = function () {
  5.            var map = new YMaps.Map(document.getElementById("YMapsID"));
  6.            map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
  7.                         map.addControl(new YMaps.TypeControl());
  8.                         map.addControl(new YMaps.ToolBar());
  9.                         map.addControl(new YMaps.Zoom());
  10.                         map.addControl(new YMaps.ScaleLine());
  11.                         var zoomControl = new YMaps.Zoom();
  12.                         }
  13.    </script>

 

1 комментарий
Подписаться на комментарии к посту
Ну можно двумя способами пойти:
1. Полученный город на серверной стороне прогеокодировать с помощью http-геокодера (результат можно закэшировать) и потом вывести нужные координаты в метод setCenter(). А если кнопка поиска не была нажата, то выводить значение по умолчанию.

Полезные материалы:
http://api.yandex.ru/maps/geocoder/
http://ymapsapi.ya.ru/replies.xml?item_no=81

2. Производить геокодирование на клиентской стороне с помощью javascript. Тогда ориентируюясь на $_POST["search"], например, решайте выводить вам координаты (по умолчанию) или вызов геокодера (если был произведен поиск).

Полезные материалы:
http://api.yandex.ru/maps/jsapi/doc/dg/concepts/geocoder.xml
http://api.yandex.ru/maps/jsapi/examples/#geocoder

Если будут вопросы - смело спрашивайте.