Яндекс Карты и Joomla 3.9.2403.03.2021 От: faq Из: Веб-строительство a159cm 31 января 2021, 12:17 86 Народ всем привет) вот так подключаются карты на главной https://prosalsk.ru<script async src="https://api-maps.yandex.ru/2.1/?apikey=<?php echo $api_yandex ?>&lang=ru_RU"></script> <script> ymaps.ready(function () { var myMap = new ymaps.Map('map', { center: [<?php echo $center[0] ?>, <?php echo $center[1] ?>], zoom: <?php echo $zoom_map ?>, controls: ["zoomControl"] }, { searchControlProvider: 'yandex#search' }), /** * Создадим кластеризатор, вызвав функцию-конструктор. * Список всех опций доступен в документации. * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer.xml#constructor-summary */ clusterer = new ymaps.Clusterer({ /** * Через кластеризатор можно указать только стили кластеров, * стили для меток нужно назначать каждой метке отдельно. * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/option.presetStorage.xml */ preset: 'islands#invertedRedClusterIcons', /** * Ставим true, если хотим кластеризовать только точки с одинаковыми координатами. */ groupByCoordinates: false, /** * Опции кластеров указываем в кластеризаторе с префиксом "cluster". * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/ClusterPlacemark.xml */ clusterDisableClickZoom: true, clusterHideIconOnBalloonOpen: false, geoObjectHideIconOnBalloonOpen: false }), /** * Функция возвращает объект, содержащий данные метки. * Поле данных clusterCaption будет отображено в списке геообъектов в балуне кластера. * Поле balloonContentBody - источник данных для контента балуна. * Оба поля поддерживают HTML-разметку. * Список полей данных, которые используют стандартные макеты содержимого иконки метки * и балуна геообъектов, можно посмотреть в документации. * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject.xml getPointData = function (index) { return { balloonContentHeader: '!', balloonContentBody: '', balloonContentFooter: '', clusterCaption: '' }; }, /** * Функция возвращает объект, содержащий опции метки. * Все опции, которые поддерживают геообъекты, можно посмотреть в документации. * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject.xml */ getPointOptions = [ <?php foreach ($list as $item) { ?> { //preset: "islands#redAttentionCircleIcon", // Опции. // Необходимо указать данный тип макета. iconLayout: 'default#image', // Своё изображение иконки метки. <?php if($item->parent_id == 11) { $ic="auto.png"; } if($item->parent_id == 20) { $ic="bank.png"; } if($item->parent_id == 24) { $ic="flag.png"; } if($item->parent_id == 35) { $ic="kafe.png"; } if($item->parent_id == 37) { $ic="deti.png"; } if($item->parent_id == 53) { $ic="shop.png"; } if($item->parent_id == 79) { $ic="razvlecheniya.png"; } if($item->parent_id == 84) { $ic="medical.png"; } if($item->parent_id == 92) { $ic="obrazovanie.png"; } if($item->parent_id == 97) { $ic="home.png"; } if($item->parent_id == 111) { $ic="krasota.png"; } if($item->parent_id == 116) { $ic="sport.png"; } if($item->parent_id == 128) { $ic="eda.png"; } if($item->parent_id == 137) { $ic="business.png"; } if($item->parent_id == 147) { $ic="turizm.png"; } if($item->parent_id == 2010) { $ic="uslugi.png"; } if($item->parent_id == 2019) { $ic="proizvodstvo.png"; } if($item->parent_id == 2023) { $ic="selhoz.png"; } ?> iconImageHref: "images/icons/map/<?php echo $ic ?>", // Размеры метки. iconImageSize: [32, 32], // Смещение левого верхнего угла иконки относительно // её "ножки" (точки привязки). iconImageOffset: [-16, -16] }, <?php } ?> ], points = [ <?php foreach ($list as $key => $item) { $link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language)); $img = json_decode($item->images)->image_intro; JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php'); $jcfields = FieldsHelper::getFields('com_content.article', $item, true); foreach($jcfields as $fields) { $f[$fields->id] = $fields; } $t="[".$f[109]->value.'],'; ?> <?php echo $t ?> <?php } ?> ], balloonContentHeader = [ <?php foreach ($list as $key => $item) { $link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language)); $img = json_decode($item->images)->image_intro; JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php'); $jcfields = FieldsHelper::getFields('com_content.article', $item, true); foreach($jcfields as $fields) { $f[$fields->id] = $fields; } $b = '{ balloonContentHeader: `<div class="map_item_img"><img src="'.$img.'"/></div><div class="map_item_info"><h3><a href="'.$link.'">'.$item->title.'</a></h3><div>'.$f[1]->value.'</div></div>`, },'; ?> <?php echo $b ?> <?php } ?> ] geoObjects = []; /** * Данные передаются вторым параметром в конструктор метки, опции - третьим. * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Placemark.xml#constructor-summary */ for(var i = 0, len = points.length; i < len; i++) { geoObjects[i] = new ymaps.Placemark(points[i], balloonContentHeader[i], getPointOptions[i]); } /** * Можно менять опции кластеризатора после создания. */ clusterer.options.set({ gridSize: 80, clusterDisableClickZoom: false }); /** * В кластеризатор можно добавить javascript-массив меток (не геоколлекцию) или одну метку. * @see https://api.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer.xml#add */ clusterer.add(geoObjects); myMap.geoObjects.add(clusterer); myMap.behaviors.disable('scrollZoom'); if(document.documentElement.clientWidth < 960) { //myMap.behaviors.disable('drag'); } /** * Спозиционируем карту так, чтобы на ней были видны все объекты. */ /* myMap.setBounds(clusterer.getBounds(), { checkZoomRange: false });*/ }); </script>Нашел вот такой костыль, как улучшить показатели Google Page Speed да и в целом скорость загрузки сайта:function loadScript(url, callback){ var script = document.createElement("script"); if (script.readyState){ // IE script.onreadystatechange = function(){ if (script.readyState == "loaded" || script.readyState == "complete"){ script.onreadystatechange = null; callback(); } }; } else { // Другие браузеры script.onload = function(){ callback(); }; } script.src = https://api-maps.yandex.ru/2.1/?apikey=075972ac-8cb9-4975-b408-613ba315e725&lang=ru_RU; document.getElementById("ymaps-2-1-78-map").append(script); } jQuery(document).ready(function(){ setTimeout(function(){ loadScript("https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3075972ac-8cb9-4975-b408-613ba315e725&amp;width=100%&height=500&lang=ru_RU&scroll=true" , function(){ ye();}); },4000); });Я не силен в этом, как это все до кучи слепить, чтоб работало? Похожие записи:Незавершенная ролевая игра Хеш-таблица с отдельной цепочкой и динамическим изменением размера Выпадающее меню смены языков Как сделать код ревью? Скачивание и анализ научных статей
a159cm
Нашел вот такой костыль, как улучшить показатели Google Page Speed да и в целом скорость загрузки сайта:
Я не силен в этом, как это все до кучи слепить, чтоб работало?