Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Поиск + API Яндекс.Карт
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Поиск + API Яндекс.Карт

Страниц (1): [1]
 

1. Funtik44 - 16 Сентября, 2010 - 10:09:18 - перейти к сообщению
Добрый день всем.

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

Вот скрипт поиска:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php include ("config.php");
  2. $search = mysql_real_escape_string($_POST['search']);
  3. $res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'", $db);
  4. if (!$res) {echo "Запрос не прошел."; exit(mysql_error());}
  5. $myrow = mysql_fetch_array($res);
  6. ?>


Вот пример того, как поиск выводит данные на сайт:
CODE (htmlphp):
скопировать код в буфер обмена
  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[dot]yandex[dot]ru для вставки карты:
CODE (htmlphp):
скопировать код в буфер обмена
  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.MiniMap());
  11.                         map.addControl(new YMaps.ScaleLine());
  12.                         var zoomControl = new YMaps.Zoom();
  13.                         }
  14.    </script>
2. Viper - 16 Сентября, 2010 - 10:22:26 - перейти к сообщению
Вы можете использовать встроенный поиск YMap

CODE (htmlphp):
скопировать код в буфер обмена
  1. map.addControl(new YMaps.SearchControl(), new YMaps.ControlPosition(YMaps.ControlPosition.TOP_RIGHT));


гляньте ещё тут http://api[dot]yandex[dot]ru/maps/jsapi/[dot][dot][dot]s/geocoding[dot]html
3. Funtik44 - 16 Сентября, 2010 - 10:35:34 - перейти к сообщению
Дело в том, что у меня уже есть свой поиск, я хочу чтобы он работал еще с API Яндекс.Карт. Вот что получилось, не могу понять, что нужно поменять:

Есть поиск:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php include ("config.php");
  2. $search = mysql_real_escape_string($_POST['search']);
  3. $res = mysql_query("SELECT `id`,`placename`,`description` from `places` where `description` like '%".$_POST['search']."%'", $db);
  4. if (!$res) {echo "Запрос не прошел."; exit(mysql_error());}
  5. $myrow = mysql_fetch_array($res);
  6. ?>


Потом вывод данных:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <form action="" method=post onsubmit="showAddress(this.address.value);return false;">
  2. <input id="inputtext" type="text" name="search" />
  3. <input id="inputbut" type="image" src="images/search.gif" name="submit">
  4. </form>


Есть скрипт, который выводит карту и осуществляет поиск:
CODE (htmlphp):
скопировать код в буфер обмена
  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.                         function showAddress (value) {
  14.            map.removeOverlay(geoResult);
  15.            var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()});
  16.            YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {
  17.                if (this.length()) {
  18.                    geoResult = this.get(0);
  19.                    map.addOverlay(geoResult);
  20.                    map.setBounds(geoResult.getBounds());
  21.                }else {
  22.                    alert("Ничего не найдено")
  23.                }
  24.            });
  25.            YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) {
  26.                alert("Произошла ошибка: " + error);
  27.            })
  28.        }
  29.    </script>


В скрипте используется ID тега input - "address" у меня у этого тега ID = "inputtext" т.к. прописаны в отдельном файле CSS. Как мне изменить скрипт API Яндекс.Карт, чтобы он работал с тегом input у которого ID = "inputtext"?
4. Funtik44 - 16 Сентября, 2010 - 13:23:44 - перейти к сообщению
Ну что, никто не знает? Тут вроде должно быть все легко!?

 

Powered by ExBB FM 1.0 RC1