Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

map.google.view: где проиходит обращение к БД?

00 голосов
6
Добрый день.

Подскажите, в каком месте происходит запись данных о метках в MAP_DATA? Где происходить непосредственно обращение к Базе Данных?
спросил 19 Окт, 13 от Brouk (180 баллов)

6 Ответы

00 голосов
Не очень понятен вопрос..Данные о метке хранятся в базе так же, как и все остальные свойства. Конкретно, как координаты: строкой ширина;долгота (или наоборот) . Остальные данные формируются и указываются в компоненте (начальная точка, тип карты, элементы управления). Непосредственно отображнием занимается google maps на основе указанных координат.
ответил 11 Ноя, 13 от unik (2,560 баллов)
00 голосов
Ок, спасибо. :)
Тогда подскажите название таблиц(ы) БД с координатами.
ответил 18 Фев, 14 от Brouk (180 баллов)
00 голосов
Цитата
Елена С пишет:
Ок, спасибо.
Тогда подскажите название таблиц(ы) БД с координатами.


Если имеется ввиду привязка в инфоблоке то в свойствах элементов инфоблока b_iblock_props по-моему, если вы имеете ввиду подключение на статической странице то непосредственно в параметрах компонента в сериализованном виде.
ответил 09 Июнь, 14 от Run (1,300 баллов)
00 голосов
Цитата
b_iblock_props

b_iblock_element_property, для инфоблоков+ b_iblock_element_prop_s[Ид_инфоблока]


Но все свойства хранятся в одной таблице, нет таблицы отдельно с координатами.
А зачем вам? :)
ответил 07 Окт, 14 от unik (2,560 баллов)
00 голосов
Нужно вывести на карту элементы инфоблока, у которых в свойстве есть привязка к 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 во время сохранения настроек компоненты (что логичнее + там ведь должен быть вызов шивраторва (или конвертера, не заню как правильно это назвать)?). Но не могу понять где это происходит, подскажете?
ответил 08 Фев, 15 от Brouk (180 баллов)
00 голосов
Или это уже относиться к компоненте map.google.system?
ответил 21 Май, 15 от Brouk (180 баллов)

Похожие вопросы

0 голосов
0 ответов
0 голосов
5 ответов
спросил 22 Ноя, 13 от Feanor007 (420 баллов)
0 голосов
1 ответ
спросил 21 Апр, 13 от FarAway (340 баллов)
+1 голос
1 ответ
0 голосов
2 ответов
спросил 28 Апр, 14 от Kania (5,180 баллов)