Привіт, при використанні табів на JQuery і компонента bitrix:maps.google.view на одній сторінці здатні спровокувати конфлікт бібліотек, після цього візуальні елементи на сторінці перестають працювати коректно. Як вирішити це завдання?
У моєму випадку, карта розміщувалася в одному з табів, це значною мірою полегшило вирішення цього питання. Пройшовшись трохи по форумах в пошуках рішення, знайшовся один варіант, який мене цілком влаштував. Суть рішення: на таб, де знаходитися карта — додається обробник події, який буде реагувати на натискання кнопки таба. Потім, по натисненню буде проводитися ініціалізація карти. Таким чином, при початковій завантаженні сторінки таби завантажуються за замовчуванням, глюків немає, після чого при переході по потрібній вкладці викликається функція инициализирующая карту.
В коді, таб виглядає таким чином:

  • Карта
  • При натисканні на таб, повинно відкриватися наступне:


    IncludeComponent(“bitrix:map.google.view”,””,Array(
    “INIT_MAP_TYPE” => “ROADMAP”,
    “MAP_DATA” => $arrMapParam,
    “MAP_WIDTH” => “710”,
    “MAP_HEIGHT” => “500”,
    “CONTROLS” => array(
    “SMALL_ZOOM_CONTROL”,
    “TYPECONTROL”,
    “SCALELINE”
    ),
    “OPTIONS” => array(
    “ENABLE_SCROLL_ZOOM”,
    “ENABLE_DBLCLICK_ZOOM”,
    “ENABLE_DRAGGING”,
    “ENABLE_KEYBOARD”
    ),
    “MAP_ID” => “myMapID”,
    “WAIT_FOR_EVENT” => “Y”
    )
    );?>

    Все начебто просто, однак це діло у мене відмовлялося працювати коректно, працювали таби, а карта глючить, що послужило причиною виникнення цього милиці. Переглянувши код компонента карти, помітив дві функції, які знадобляться для ініціалізації. Крім того, зверніть увагу, що в параметрах виклику компонента вказано значення MAP_ID. Його необхідно ввести обов’язково.
    Функція, що реагує на подію:

    function loadGMap(){
    init_myMapID ();
    BX_SetPlacemarks_myMapID ();
    }

    У табі необхідно дописати обробник події onClick():

  • Карта
  • Отже, при кліці на таб, викликається функція loadGMap(), в якій проводитися ініціалізація карти. init_myMapID() – ініціалізує карту myMapID, BX_SetPlacemarks_myMapID() – встановлює точки на карті, якщо такі були. В моєму прикладі ці координати передавалися у змінній $arrMapParam, при зверненні до компоненту карти.

    Додав: htmaker, 19.03.2014 р.
    (Ще не оцінили)

    Завантаження…

    Діліться з друзями:

    См. також:


    Налаштування часу у VMBitrix
    Рубрика: Bitrix, Linux

    Видалення «кинутих» кошиків в системі Бітрікс
    Рубрика: Bitrix

    Використання highload-блоків в Bitrix
    Рубрика: Bitrix

    Як виконати SQL запит в Bitrix
    Рубрика: Bitrix

    Як підрахувати кількість елементів в Bitrix?
    Рубрика: Bitrix

    Динамічне масштабування зображень в Bitrix
    Рубрика: Bitrix

    Виключаємо користувача з ID=1 групи адміністраторів в Bitrix
    Рубрика: Bitrix

    Як скинути пароль адміністратора у Bitrix?
    Рубрика: Bitrix

    SQL-запити в бітрікс
    Рубрика: Bitrix

    Коментарі

  • Олексій пише:
    08.07.2014 у 16:09

    Спасибі! Дуже виручили — мені потрібно було три карти показувати по черзі і були проблеми з відображенням. Рішення гідно розміщення в базі знань )

    Відповісти

  • htmaker пише:
    17.07.2014 у 01:26

    це здорово)

    Відповісти

  • Кирило пише:
    07.06.2017 в 20:13

    Спасибі Вам! А то реально голову скрутив і саме Бітрікс код ставив, так що і з MAP_ID Ви теж допомогли!
    Жмакнул на банерах в подяку! )

    Відповісти