Забыли пароль?
Запросите новый здесь.

Автор темы: yury
ID темы: 1467
Информация:
Тема содержит 42 сообщения, была просмотрена 24119 раз.  Имеются прикрепленные файлы.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Вопросы новичков
 Распечатать тему
Как подключить яндекс.карты к новостям?
yury
Создал поле, в котором указываю адрес события.

теперь никак не пойму, как заставить яндекс.карты реагировать на этот введенный адрес?
 
Rush
http://api.yandex.../geocoder/
 
Web
yury
да, это видел, но не очень понимаю как передавать данные для получения адреса

вывел при клике на балун заголовок новости и адрес, но как сделать чтобы сама метка отображалась по указанному адресу?
сделал так:


<script type="text/javascript">
ymaps.ready(init);
var myMap,
myPlacemark;

function init(){
myMap = new ymaps.Map ("map", {
center: [54.318997, 48.398084],
zoom: 14
});


myPlacemark = new ymaps.Placemark([54.318997, 48.398084], {
balloonContentHeader: "<?echo ''.$data['subject'].'';?>",
balloonContentFooter: "<?echo ''.$data['adress'].'';?>"
});

myMap.geoObjects.add(myPlacemark);
}

</script>
<div id="map" style="width: 100%; height: 400px"></div>
 
yury
кто подможет? можно за бонус
 
spiker
Вместо АДРЕС — адрес из базы, напр. $data['adress']
Вместо КОД — вставить то, что получишь здесь http://api.yandex.ru/maps/form.xml



Скачать исходники  Код

echo '<body onload="javasript:showAddress(\''.АДРЕС.'\');">
<script src="http://api-maps.yandex.ru/1.1/index.xml?key=КОД"
   type="text/javascript"></script>
    <script type="text/javascript">
        var map, geoResult;

        // Создание обработчика для события window.onLoad
        YMaps.jQuery(function () {
            // Создание экземпляра карты и его привязка к созданному контейнеру
            map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);

            // Установка для карты ее центра и масштаба
            map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);

            // Добавление элементов управления
          map.addControl(new YMaps.TypeControl());
            map.addControl(new YMaps.ToolBar());
            map.addControl(new YMaps.Zoom());
            map.addControl(new YMaps.ScaleLine());
        }); 

        // Функция для отображения результата геокодирования
        // Параметр value - адрес объекта для поиска
        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 (geocoder, error) {
                alert("Произошла ошибка: " + error);
            })
        }
    </script>


    <div id="YMapsID" style="width:600px;height:400px"></div>';



Изменил(а) spiker, 18.04.2013 07:15
 
mishqa35
Скачать исходники  Код
echo "<script src='http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU' type='text/javascript'></script>";
echo "<script type='text/javascript'>
ymaps.ready(init);
var myMap, myPlacemark;

function init(){
   myMap = new ymaps.Map ('map', {
      center: [54.318997, 48.398084],
      zoom: 14
   });
   myPlacemark = new ymaps.Placemark([54.318997, 48.398084], {
      balloonContentHeader: '{$data['subject']}',
      balloonContentFooter: '{$data['adress']}'
   });
   myMap.geoObjects.add(myPlacemark);
}

</script>
<div id='map' style='width: 100%; height: 400px'></div>";



 
Web
yury
как заголовок и адрес вставить, я то вставил, с этим проблем нет.

а вот как из базы дергая адрес: Самара, ул.Революционная, 80 превращать в координаты или как он там это делает, чтобы вставлялось в

myPlacemark = new ymaps.Placemark([54.318997, 48.398084],
 
yury
и вывести тем самым на главной странице новостей общую карту с актуальными точками. актуальность точки определяется по окончанию даты публикации, которая задается через админку
 
mishqa35
http://api.yandex.../About.xml
 
Web
yury

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

т.е в БД из поля adress перевел в координаты и вывел на карте в положенном месте
 
mishqa35
Пример адреса скажи, что в дб забиваеш
 
Web
yury
mishqa35 написал:

Пример адреса скажи, что в дб забиваеш


Самара, ул.Революционная, 80
 
mishqa35
Как то так ..
Скачать исходники  Код
echo "<script src='http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU' type='text/javascript'></script>";
echo "<script type='text/javascript'>
   // Как только будет загружен API и готов DOM, выполняем инициализацию
   ymaps.ready(init);

   var myMap, myPlacemark;

   function init () {
      // Поиск координат центра Нижнего Новгорода
      ymaps.geocode('".$data['adress']."', { results: 1 }).then(function (res) {
         // Выбираем первый результат геокодирования
         var firstGeoObject = res.geoObjects.get(0);

         // Создаём карту.
         // Устанавливаем центр и коэффициент масштабирования.
         myMap = new ymaps.Map('map', {
            center: firstGeoObject.geometry.getCoordinates(),
            zoom: 14
         });

         myPlacemark = new ymaps.Placemark(firstGeoObject.geometry.getCoordinates(), {
            balloonContentHeader: '".$data['subject']."',
            balloonContentFooter: '".$data['adress']."'
         });

         // Делаем запрос на обратное геокодирование
         ymaps.geocode(myMap.getCenter(), {
            kind: 'house',
            results: 1
         }).then(function (res) {
            // Добавляем полученную коллекцию на карту
            //myMap.geoObjects.add(res.geoObjects);
            myMap.geoObjects.add(myPlacemark);
         });
      }, function (err) {
         // Если геокодирование не удалось,
         // сообщаем об ошибке
         alert(err.message);
      })
   }
</script>";
echo "<div id='map' style='width: 100%; height: 400px'></div>";



 
Web
Serge Renard
А почему б не отправить HTTP-запрос геокодеру?
http://api.yandex...params.xml
 
Web
mishqa35
Скачать исходники  Код
в моем примере проще, без лишних запросов



 
Web
yury
mishqa35 написал:

Как то так ..
Скачать исходники  Код
echo "<script src='http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU' type='text/javascript'></script>";
echo "<script type='text/javascript'>
   // Как только будет загружен API и готов DOM, выполняем инициализацию
   ymaps.ready(init);

   var myMap, myPlacemark;

   function init () {
      // Поиск координат центра Нижнего Новгорода
      ymaps.geocode('".$data['adress']."', { results: 1 }).then(function (res) {
         // Выбираем первый результат геокодирования
         var firstGeoObject = res.geoObjects.get(0);

         // Создаём карту.
         // Устанавливаем центр и коэффициент масштабирования.
         myMap = new ymaps.Map('map', {
            center: firstGeoObject.geometry.getCoordinates(),
            zoom: 14
         });

         myPlacemark = new ymaps.Placemark(firstGeoObject.geometry.getCoordinates(), {
            balloonContentHeader: '".$data['subject']."',
            balloonContentFooter: '".$data['adress']."'
         });

         // Делаем запрос на обратное геокодирование
         ymaps.geocode(myMap.getCenter(), {
            kind: 'house',
            results: 1
         }).then(function (res) {
            // Добавляем полученную коллекцию на карту
            //myMap.geoObjects.add(res.geoObjects);
            myMap.geoObjects.add(myPlacemark);
         });
      }, function (err) {
         // Если геокодирование не удалось,
         // сообщаем об ошибке
         alert(err.message);
      })
   }
</script>";
echo "<div id='map' style='width: 100%; height: 400px'></div>";




пару моментов по выводу переменных из БД поправил и что могу сказать - огромнейшее спасибо , почти заработало как хотел:)

осталось понять, как вывести все точки на одной карте, которые в БД актуальны, т.е срок публикации не истек.
 
yury
а то если вставляю этот код, то выдает : миссинг геокод параметр

я так понимаю, надо передать некий массив в скрипт? а как передается он через php?
Изменил(а) yury, 18.04.2013 08:36
 
mishqa35
иди вот в эту сторону, пробуй.. подставляй.. http://api.yandex...ltigeocode, увы у меня щас времени нет
 
Web
yury
mishqa35 написал:

иди вот в эту сторону, пробуй.. подставляй.. http://api.yandex...ltigeocode, увы у меня щас времени нет

да, я как раз нашел этот пример
 
yury
Разобрался почти со всем.

осталось понять, как вывести адреса из БД в массиве


myMultiGeocoder.geocode([
'Самара, Московское шоссе, 10',
'Самара, Московское шоссе, 108',
'Самара, 12 сентября,1',
'Самара, Кирова, 108'
])
 

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
Как правильно сделать ЧПУ и переиндексировать сайт?  →  Моды 2 / 520 22.11.2017 18:20
Посоветуйте JS-слайдер чтобы фотки JPG сменялись как в GIF-анимации  →  Плагины 2 / 394 13.11.2017 21:01
Посоветуйте как можно больше дешёвых хостингов для лендингов  →  Хостинг 3 / 618 30.09.2017 18:44
Установка Яндекс Метрики, Я.Вебмастера, Гугл Аналитикс, Г.Вебмастер, пиксель ретаргетинга Вконтакте  →  Другое 9 / 3138 07.09.2017 08:57
как прикрепить скрипт к сайту  →  Хаки/скрипты 1 / 1171 17.08.2017 10:46
Как правильно подсчитать рейтинг статьи?  →  Хаки/скрипты 3 / 880 09.08.2017 22:27
Как правильно загрузить свой шрифт в css для всех браузеров?  →  Темы оформления 7 версии 12 / 5516 04.08.2017 10:06
Как массово удалить присланные новости?  →  Вопросы новичков 7 / 4905 06.06.2017 12:10
Как перейти с http на https  →  Вопросы новичков 17 / 11219 07.05.2017 13:29
Как вы платите налоги с интернет дохода в РФ  →  Флуд 2 / 777 03.05.2017 17:20
Топ 5 пользователей форума
Alex Alex (1,171)   Zaxap Zaxap (1,078)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)