Доброго времени суток. Есть сайт компании, на нем Яндекс карта, на которой отмечены торговые точки. При нажатии на точку раскрывается балун, который содержит информацию о торговой точке (текстового формата). Появилась задача добавить в балун логотип торгового бренда. Информация о торговой точке тянется из Excel файла. Как просто вставить логотип в балун знаю. Вопрос в том как вставить определенный логотип из xlsx файла.
JS код:
ymaps.ready(init);
function init(){
var myMap = new ymaps.Map("map", {
center: [55.76, 37.64],
zoom: 12,
controls: ['smallMapDefaultSet']
});
ymaps.geolocation.get({
provider: 'browser',
}).then(function (result) {
myMap.setCenter(result.geoObjects.position);
});
var clusterer = new ymaps.Clusterer({
preset: 'islands#invertedDarkGreenClusterIcons',
groupByCoordinates: false
});
var geoObjects = [];
$.ajax({
type: 'GET',
url: 'https://oem-einvoice.ru/map/sbrf/backend/partners.php',
data: {},
dataType: 'json',
success: function (data) {
$.each(JSON.parse(data), function(i, el) {
var objectOptions = {};
if (el.brandIconName != "") {
objectOptions = {
iconLayout: 'default#image',
iconImageHref: 'assets/images/icons/brands/' + el.brandIconName,
iconImageSize: [65, 65],
iconImageOffset: [-5, -30]
};
}
else if (el.type != "") {
var iconImageName = "";
switch (el.type) {
case "АЗС":
iconImageName = "azs.png";
break;
case "Красота":
iconImageName = "beauty.png";
break;
case "Кафе":
iconImageName = "cafe.png";
break;
case "Для дома":
iconImageName = "home.png";
break;
case "Медицина":
iconImageName = "medic.png";
break;
case "Отели":
iconImageName = "model.png";
break;
case "Запчасти":
iconImageName = "parts.png";
break;
case "Продукты":
iconImageName = "products.png";
break;
case "СТО":
iconImageName = "sto.png";
break;
default:
iconImageName = "universe.png";
}
if (iconImageName != "") {
objectOptions = {
iconLayout: 'default#image',
iconImageHref: 'assets/images/icons/categories/' + iconImageName,
iconImageSize: [65, 65],
iconImageOffset: [-5, -30]
};
}
}
geoObjects.push(new ymaps.Placemark(
el.coords,
{
balloonContentHeader: `<h1 class='baloon-header'>` + el.brand + `</h1>`,
balloonContentBody: `
<div class="baloon-body">
<img src='assets/images/icons/logo/' height='100px' weight='50px'>`+ el.logoCompany +`</img>
<p>`+ el.products +`</p>
<p><span class="data-type-title">Адрес:</span> <span>`+ el.region +`, ` + el.address + `</span></p>
<p><span class="data-type-title">Скидка:</span> <span>`+ el.discount +`</span></p>
<p><span class="data-type-title">НДС:</span> <span>`+ el.tax +`</span></p>
<p><span class="data-type-title">Координаты:</span> <span>`+ el.coords.join(',') +`</span></p>
<p><span class="data-type-title">Доп.условия:</span> <span>`+ el.additionalTerms +`</span></p>
</div>
`,
}, objectOptions
));
});
clusterer.add(geoObjects);
myMap.geoObjects.add(clusterer);
}
});
}
PHP код:
<?php
require_once(__DIR__ . '/vendor/autoload.php');
$xlsxPartnersFileName = 'partners.xlsx';
$xlsxParnersFilePath = __DIR__ . '/' . $xlsxPartnersFileName;
$jsonPartnersFileName = 'partners.json';
$jsonPartnersFilePath = __DIR__ . '/' . $jsonPartnersFileName;
if (file_exists($jsonPartnersFilePath)) {
$xlsxParnersFileModTime = filemtime($xlsxParnersFilePath);
$jsonPartnersFileModTime = filemtime($jsonPartnersFilePath);
if ($xlsxParnersFileModTime > $jsonPartnersFileModTime) {
jsonPartnersFileUpdate($xlsxParnersFilePath, $jsonPartnersFilePath);
}
}
else {
jsonPartnersFileUpdate($xlsxParnersFilePath, $jsonPartnersFilePath);
}
$jsonPartners = file_get_contents($jsonPartnersFilePath);
header('Content-Type: application/json; charset=utf-8');
echo json_encode($jsonPartners);
function jsonPartnersFileUpdate($xlsxFilePath, $jsonFilePath)
{
$partners = getXlsxPartners($xlsxFilePath);
file_put_contents($jsonFilePath, json_encode($partners));
}
function getXlsxPartners($filePath)
{
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx();
$reader->setReadDataOnly(true);
$spreadsheet = $reader->load($filePath);
$sheet = $spreadsheet->getSheet($spreadsheet->getFirstSheetIndex());
$rawData = $sheet->toArray();
$partners = [];
for ($i=1; $i<count($rawData); $i++) {
if (!empty($rawData[$i][8])) {
$partners[] = [
'type' => (!empty($rawData[$i][0])) ? $rawData[$i][0] : '',
'company' => (!empty($rawData[$i][1])) ? $rawData[$i][1] : '',
'brand' => (!empty($rawData[$i][2])) ? $rawData[$i][2] : '',
'region' => (!empty($rawData[$i][3])) ? $rawData[$i][3] : '',
'address' => (!empty($rawData[$i][4])) ? $rawData[$i][4] : '',
'products' => (!empty($rawData[$i][5])) ? $rawData[$i][5] : '',
'discount' => (!empty($rawData[$i][6])) ? $rawData[$i][6] : '',
'tax' => (!empty($rawData[$i][7])) ? $rawData[$i][7] : '',
'coords' => explode(',', $rawData[$i][8]),
'brandIconName' => (!empty($rawData[$i][9])) ? $rawData[$i][9] : '',
'additionalTerms' => (!empty($rawData[$i][10])) ? $rawData[$i][10] : '',
'logoCompany' => (!empty($rawData[$i][11])) ? $rawData[$i][11] : '',
];
}
}
return $partners;
}