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

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

теперь никак не пойму, как заставить яндекс.карты реагировать на этот введенный адрес?

 
Rush


 
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


 
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:

Перейти на форум:
Похожие темы
Темы Форум Ответов / Просмотров Последние сообщения
в PHP 7.4 нельзя вставлять пустое значение в `id` как раньше  →  Пожелания и предложения 4 / 1791 19.12.2023 03:32
нужны ли на сайте "Закладки" и "История посещений", как в браузере?  →  Пожелания и предложения 4 / 1136 11.08.2023 15:56
Как сделать микроразметку на сайте?  →  PHP 1 / 3473 22.07.2021 06:39
Как вебмастеру сформулировали УТП для создания сайтов на PHP-Fusion?  →  Пожелания и предложения 1 / 7447 25.07.2020 03:46
SEO-оптимизация. дубли страниц в PHP-Fusion - где искать и как избавиться?  →  Ошибки, баги 0 / 5306 19.06.2020 17:06
Как вывести все данные из таблицы, за исключением администраторов  →  Плагины 3 / 5581 24.02.2020 15:59
Скликиватель рекламы яндекс директ  →  СЕО 1 / 636 14.02.2020 11:24
Как перейти с http на https  →  Вопросы новичков 30 / 32494 24.10.2019 18:45
Как правильно сделать ЧПУ и переиндексировать сайт?  →  Моды 4 / 10476 24.10.2019 17:38
Как перенести ресурс на другой домен  →  Установка и настройка системы 5 / 4897 24.10.2019 14:01
Топ 5 пользователей форума
Zaxap Zaxap (1,090)   Vova Vova (877)   Pisatel Pisatel (678)   util util (666)   SchreiBear SchreiBear (625)