Спасибо, получилось следующее:
в файле template.php добавляем код
(в данном коде добавляются метки из инфоблоков к тем, которые были введены вручную)
В результате $arResult['POSITION']['PLACEMARKS'] содержит необходимую информацию, count($arResult['POSITION']['PLACEMARKS']) также выдает правильное число, НО на карту выводятся ТОЛЬКО метки первоначально хранящиеся в $arResult['POSITION']['PLACEMARKS'], т.е. метки инфоблока не отображаются.
Вот код который отвечает за вывод (изменения не вносились):
Подскажите, что не учтено?
в файле template.php добавляем код
Код |
---|
$arSelect = Array("NAME", "PROPERTY_MAP"); $arFilter = Array("IBLOCK_TYPE" => "type", "ACTIVE_DATE" => "Y", "ACTIVE" => "Y"); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize" => 50), $arSelect); $arCoordinatesForMap = $arResult['POSITION']['PLACEMARKS']; while($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); list($long, $lang) = split(",", $arFields['PROPERTY_MAP_VALUE']); array_push ( $arCoordinatesForMap, array( 'TEXT' => $arFields['NAME'], 'LON' => $long, 'LAT' => $lang ) ); } $arResult['POSITION']['PLACEMARKS'] = $arCoordinatesForMap; |
В результате $arResult['POSITION']['PLACEMARKS'] содержит необходимую информацию, count($arResult['POSITION']['PLACEMARKS']) также выдает правильное число, НО на карту выводятся ТОЛЬКО метки первоначально хранящиеся в $arResult['POSITION']['PLACEMARKS'], т.е. метки инфоблока не отображаются.
Вот код который отвечает за вывод (изменения не вносились):
Код |
---|
<div class="bx-yandex-view-layout"> <div class="bx-yandex-view-map"> <? echo '<pre>'; print_r($arResult['POSITION']['PLACEMARKS']); echo '</pre>'.count($arResult['POSITION']['PLACEMARKS']);//проверка $APPLICATION->IncludeComponent('bitrix:map.google.system', '.default', $arTransParams, false, array('HIDE_ICONS' => 'Y')); ?> </div> </div> <?if (is_array($arResult['POSITION']['PLACEMARKS']) && ($cnt = count($arResult['POSITION']['PLACEMARKS']))):?> <script type="text/javascript"> function BX_SetPlacemarks_<?echo $arParams['MAP_ID']?>() { <? for($i = 0; $i < $cnt; $i++): ?> BX_GMapAddPlacemark(<?echo CUtil::PhpToJsObject($arResult['POSITION']['PLACEMARKS'][$i])?>, '<?echo $arParams['MAP_ID']?>'); <? endfor; ?> } function BXShowMap_<?echo $arParams['MAP_ID']?>() {BXWaitForMap_view('<?echo $arParams['MAP_ID']?>');} BX.ready(BXShowMap_<?echo $arParams['MAP_ID']?>); </script> <?endif;?> |