Нужно вывести на карту элементы инфоблока, у которых в свойстве есть привязка к google карте. (Нашла много тем, где этот вопрос поднимался, но самого решения нет.)
Считать необходимую информацию из инфоблока довольно просто, но MAP_DATA содержит информацию типа:
Цитата |
---|
a:4:{s:10:"google_lat";d:55.7383;s:10:"google_lon";d:37.5946;s:12:"google_scale";i:13;s:10:"PLACEMARKS";a:6:{i:0;a:3:{s:4:"TEXT";i:0000;s:3:"LON";d:37.587876597816;s:3:"LAT";d:55.7410300083;}i:1;a:3:{s:4:"TEXT";s:3:"aaa";s:3:"LON";d:37.601824084693;s:3:"LAT";d:55.74078842161;}i:2;a:3:{s:4:"TEXT";s:3:"bbb";s:3:"LON";d:37.594170847867;s:3:"LAT";d:55.749484573736;}i:3;a:3:{s:4:"TEXT";s:3:"ccc";s:3:"LON";d:37.61844662715487;s:3:"LAT";d:55.74162591293884;}i:4;a:3:{s:4:"TEXT";s:0:"";s:3:"LON";d:37.60776070774921;s:3:"LAT";d:55.75920103592634;}i:5;a:3:{s:4:"TEXT";s:3:"eee";s:3:"LON";d:37.60776070774921;s:3:"LAT";d:55.75920103592634;}}} |
И полностью дешифровать это не получается. На API Карт Google разъяснений не нашла.
Пробовала делать подмену информации MAP_DATA в файле map.google.view/component.php. Вот код который использовала (не корректный):
Цитата |
---|
$arSelect = Array("NAME", "PROPERTY_MAP"); $arFilter = Array("IBLOCK_TYPE" => "office", "ACTIVE_DATE" => "Y", "ACTIVE" => "Y"); $res = CIBlockElement::GetList(Array(), $arFilter, false, Array("nPageSize"=>50), $arSelect); $ii = 0; while($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); echo "<!--pre>"; print_r($arFields); echo "</pre-->"; list($long, $lang) = split(",", $arFields['PROPERTY_MAP_VALUE']); $mapdata .= 'i:$ii;a:3:{s:4:"'.$arFields['NAME'].'";s:0:"";s:3:"LON";d:'.$long.';s:3:"LAT";d:'.$lang.';}'; $ii++; } $mapdata .= "}}}"; |
Потом решила поменять подход: заменить информацию в MAP_DATA во время сохранения настроек компоненты (что логичнее + там ведь должен быть вызов шивраторва (или конвертера, не заню как правильно это назвать)?). Но не могу понять где это происходит, подскажете?