Нужно вывести на карту элементы инфоблока, у которых в свойстве есть привязка к google карте. (Нашла много тем, где этот вопрос поднимался, но самого решения нет.)
Считать необходимую информацию из инфоблока довольно просто, но MAP_DATA содержит информацию типа:
[QUOTE]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;}}}[/QUOTE]
И полностью дешифровать это не получается. На API Карт Google разъяснений не нашла.
Пробовала делать подмену информации MAP_DATA в файле map.google.view/component.php. Вот код который использовала (не корректный):
[QUOTE]$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 .= "}}}";[/QUOTE]
Потом решила поменять подход: заменить информацию в MAP_DATA во время сохранения настроек компоненты (что логичнее + там ведь должен быть вызов шивраторва (или конвертера, не заню как правильно это назвать)?). Но не могу понять где это происходит, подскажете?
Считать необходимую информацию из инфоблока довольно просто, но MAP_DATA содержит информацию типа:
[QUOTE]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;}}}[/QUOTE]
И полностью дешифровать это не получается. На API Карт Google разъяснений не нашла.
Пробовала делать подмену информации MAP_DATA в файле map.google.view/component.php. Вот код который использовала (не корректный):
[QUOTE]$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 .= "}}}";[/QUOTE]
Потом решила поменять подход: заменить информацию в MAP_DATA во время сохранения настроек компоненты (что логичнее + там ведь должен быть вызов шивраторва (или конвертера, не заню как правильно это назвать)?). Но не могу понять где это происходит, подскажете?