Клуб API Карт

Геокодер

Пост в архиве.

Добрый день. Задача состоит в том, чтобы при открытии страницы с адресом фирмы, выводилась карта с меткой на эту фирму. В head следующий код:

<script src="http://api-maps.yandex.ru/1.1/index.xml?key=ACawIUwBAAAA7YGlMwIAfXglJFppDn1R0bse2ajBBNuWaokAAAAAAAAAAACVrc4uoxPGmsp4ocSNQazauzLLgw==" 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());
        });
// Функция для отображения результата геокодирования
        // Параметр 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 class="p-item-r">
<?echo $arResult["DISPLAY_PROPERTIES"]['REGION']["DISPLAY_VALUE"]?></div>
<div class="p-item-c">
<?echo $arResult["DISPLAY_PROPERTIES"]['CITY']["DISPLAY_VALUE"]?></div>
<div class="p-item-p">
<?echo $arResult["DISPLAY_PROPERTIES"]['RAION']["DISPLAY_VALUE"]?></div>
<div class="p-item-p">
<?echo $arResult["DISPLAY_PROPERTIES"]['PUNKT']["DISPLAY_VALUE"]?></div>
<div class="p-item-s">
<?echo $arResult["DISPLAY_PROPERTIES"]['STREET']["DISPLAY_VALUE"]?>&nbsp;№<?echo $arResult["DISPLAY_PROPERTIES"]['DOM']["DISPLAY_VALUE"]?>&nbsp;Корпус<?echo $arResult["DISPLAY_PROPERTIES"]['KORP']["DISPLAY_VALUE"]?>&nbsp;Офис<?echo $arResult["DISPLAY_PROPERTIES"]['OFF']["DISPLAY_VALUE"]?></div>

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

Где REGION - регион

CITY - город

RAION - район

PUNKT - населенный пункт

STREET - улица

DOM - дом

Каким образом задать value, чтобы при открытии страницы на карте была показана метка фирма с адресом?

9 комментариев
А каким образом можно прописать вывод адреса в этой строке?

 var geocoder = new YMaps.Geocoder("'REGION','CITY','STREET','DOM'");
                                     ------------------------------
А в чем именно проблема?
Проблема в том, что в таком формате геокодер не срабатывает. Т е если написать так ("Москва"), то работает, если так  ("'REGION','CITY','STREET','DOM'"), то не работает, а очень надо.




как, где и с каким синтаксисом надо прописать, что CITY-это город, STREET-это улица т тп?
var 'CITY'=locality ????
var locality='CITY'????
как???
var request =CITY;
            var geocoder = new YMaps.Geocoder(request);  так тоже не работает((
Sergey Konstantinov
28 января 2016, 07:18
Попробуйте изменить код следующим образом:
между строками
// Добавление элементов  управления
            map.addControl(new YMaps.TypeControl());
и
         });

вставьте:
showAddress('      $details = $arResult["DISPLAY_PROPERTIES"];
      echo $details['REGION']["DISPLAY_VALUE"] . ', ' .
              $details['CITY']["DISPLAY_VALUE"] . ',  ' .
              $details['STREET']["DISPLAY_VALUE"] . ',  ' .
              $details[DOM']["DISPLAY_VALUE"];
?>');
Все равно не работает((((