У меня есть Карта изображения - с 20 кликабельными Маркерными точками, сделанными с использованием многоугольников.
Я хочу добавить Центр значков маркеров к каждому многоугольнику, который, если возможно, меняет цвет, когда активный (щелчок) может использовать SVG или .png для Pin.
При нажатии они добавляют # 1, #2 и т. Д. По URL-адресу - используется для заполнения области ТЕКСТ на странице контактной информацией.
Каждая область добавляется на карту с помощью оператора foreach.
пытался использовать «символ», но это можетв центр каждого полигона.
<svg id="svgmap<?= $bID; ?>" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="position:absolute;top:0;left:0;" viewBox="0 0 <?= $width; ?> <?= $height; ?>" >
<defs>
<symbol id="pin" viewBox='0 0 24 24'><title>location on</title>
<path d='M12 2c-3.87 0-7 3.13-7 7 0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z'></path>
<path d='M0 0h24v24h-24z' fill='none'></path>
</symbol>
</defs>
<?php
foreach($areas as $area) {
$points = trim($area['mapdata']);
$url = $sec->sanitizeURL($area['linked_url']);
?>
<a class="arrow" id="pin" xlink:href="<?= $url; ?>" xlink:title="<?= $title; ?>" <?= ($area['newWindow'] && !($area['forceDownload'] && $area['type'] == 'file') ? 'target="_blank"' : '')?>>
<g id="my-group">
<use xlink:href="#pin" x="" y="" width="30px" height="30px" />
<polygon points="<?= $points; ?>" fill="url(#img1)" filter="url(#sparklin)" opacity="1" />
</g>
</a>
}
Отображение всех значков в левом верхнем углу карты. Не по центру для каждого раздела.
ОБНОВЛЕНИЯ
Хорошо, используя решение ниже: Я создалследующая функция выше моего цикла, но я обнаружил ошибку с «Uncaught TypeError: poly.getBBox не является функцией в myfunction (contacts: 508) для контактов: 566"
[код]
<script>
function myfunction(){
// the bounding box of the polygon
var BB = null;
var BB = poly.getBBox();
// the center of the polygon
var center = {x:BB.x + BB.width/2,
y:BB.y + BB.height/2}
//the size of the symbol
var symbol = {w:30,h:30}
// set the values for the x and y attributes of the symbol
theUse.setAttributeNS(null, "x",center.x - symbol.w/2)
theUse.setAttributeNS(null, "y",center.y - symbol.h)
};
</script>
//Code inside foreach
<a class="arrow" xlink:href="<?= $url; ?>" xlink:title="<?= $title; ?>">
<polygon id="poly" points="<?= $points; ?>" fill="none" opacity="1" />
<use id="theUse" xlink:href="#pin" x="20" y="20" width="40" height="40" />
</a>
<script>
myfunction();
</script>
[/code]
Я полагаю, что это проблема poly.getBBox ();Может быть, это связано с повторным использованием идентификатора поли?Нужно ли мне добавить в цикл счетчик приращение для каждого цикла.