Клуб API Карт

Как вывести все объекты из базы геокодированием?

Пост в архиве.
Подскажите, пожалуйста, как вывести все объекты из базы данных, которые лежат по принципу: 
Город, улица, номер дома.
Непонятно как. Обрабатывать XML-схему ответа геокодера? Подскажите, кто сталкивался.
 Что добавить надо в скрипт?
<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);

         
           // Добавление элементов управления
           
           

            // Создание позиций для элемента управления
           var topLeftPos = new YMaps.ControlPosition(YMaps.ControlPosition.TOP_LEFT, new YMaps.Size(190, 15)),
               topRightPos = new YMaps.ControlPosition(YMaps.ControlPosition.TOP_RIGHT, new YMaps.Size(170, 15)),
               scaleLine = new YMaps.ScaleLine(),
               curPos = topLeftPos;

           // Добавление элементов управления
           map.addControl(scaleLine, curPos);
           map.addControl(new YMaps.TypeControl(), new YMaps.ControlPosition(YMaps.ControlPosition.TOP_LEFT));
           map.addControl(new YMaps.Zoom());
           map.addControl(new YMaps.MiniMap(), new YMaps.ControlPosition(YMaps.ControlPosition.TOP_RIGHT));

   


       // Функция для отображения результата геокодирования
       // Параметр value - адрес объекта для поиска
     
           // Удаление предыдущего результата поиска
           value="Санкт-Петербург,Н- район, Н пр.,32";
            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);
                    // Создание метки и добавление ее на карту
        // var geoResult = new YMaps.Placemark(geoResult, {style: "example#customPoint"});
               
                   map.addOverlay(geoResult, {style: "example#customPoint"});
                    map.setBounds(geoResult.getBounds());
                   
               }else {
                   alert("Ничего не найдено")
               }
           });

           // Процесс геокодирования завершен неудачно
           YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) {
               alert("Произошла ошибка: " + error);
           })
       });
7 комментариев
Александр Новиков
28 января 2016, 07:56
Изначально неверный подход. Зачем вам каждый раз на выводе делать геокодирование... Пожалейте всех - себя, посетителей вашего сайта и сервера Яндекса. Геокодирование имеет смысл делать при добавлении/редактировании объекта - и сразу писать координаты в базу. А уже потом по координатам выводить точки. Если же у вас уже есть база адресов - то запустите один раз скрипт, который пройдется по адресам и запишет в базу координаты. Пример такого скрипта могу дать, если сами затруднитесь написать.
sozdanie-saita-spb
28 января 2016, 07:56
Я сам принцип получения координат из Геокодера не понимаю. Необходимо парсить его ответ на PHP? NeWMaN, за пример был бы очень благодарен.
Александр Новиков
28 января 2016, 07:56
Есть два варианта использования геокодера. 1. Это использование его из JavaScript API - вы его как раз привели. В результате вы получаете объект - точку на карте. Потом достаточно добавить его на карту - и все. Либо если нужно передать координаты на сервер, то можно извернуться... Получить координаты из объекта вполне возможно, а потом сформировать запрос на сервер посредством AJAX. Но как я уже говорил - подход не совсем правильный. 2. Возможно использовать HTTP геокодер. Тут никакого JS а чисто серверные технологии. Т.е. формируете запрос по HTTP - в ответ получаете XML и парсите его и выцепляете координаты, и другую информацию. Пример кода вот здесь: http://codepaste.ru/3053/
В PHP есть много библиотек для работы с xml.
Может воспользоваться ими.

http://php.net/manual/en/book.simplexml.php
http://php.net/manual/en/book.xml.php
Александр Новиков
28 января 2016, 07:56
Ага. Это если нужен более подробный анализ файла. Для некоторыхх случаев и проще и быстрей выцепить нужные значения с помощью regexp или вообще с помощью строковых функций.
sozdanie-saita-spb
28 января 2016, 07:56
Спасибо, NeWMan, все работает как часы=)))) Отличный совет.

 здравствуйте. Почитала, посмотрела пример. У меня координаты уже лежат в базе посредством использования как раз геокодера и манипуляций php.

Я сейчас запуталась. Как мне все взять точки из базы и вывести их на карту. То ли действительно ajax использовать, то ли формировать xml отдельный из этого всего. Хотя может есть и проще способ? Подскажите?