Я разрабатываю интерактивную карту, где можно увидеть стрелки. Эти стрелки сделаны с кодом SVG. При щелчке контейнера SVG появляется всплывающее окно, как показано на рисунке ниже:
Основная проблема заключается в том, что поле для монетодержателя (помеченос сплошной белой рамкой 1px) действует как зона щелчка для отображения всплывающего окна, затрудняя щелчок по одной из них, когда рядом находятся стрелки, как в следующем примере:
Итак, я пытаюсь сделать контейнер svg похожим на маленькую стрелку большего размера:
Сделать его легко кликаемым по желаемомуarrow.
Я не очень опытный разработчик HTML / javascript, поэтому я не знаю, можно ли «придать форму» контейнеру SVG для его содержимого, сделав его с той же формой «стрелки»,и, если возможно, как мне поступить?
РЕДАКТИРОВАТЬ 1: jsfiddle с примером:
Я использую следующий код JavaScript:
function windArrow(speed, angle)
{
//var angulo = 0;
var direction = 90-angle;
// var speed = 20;
var x = speed*Math.cos(deg2rad(direction)).toFixed(4);
var y = speed*Math.sin(deg2rad(direction)).toFixed(4);
var svgHeader = '<svg version="1.1" id="arrow_svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="100px" height="100px" ><defs><marker id="arrowHead" markerWidth="10" markerHeight="10" refX="0" refY="1" orient="auto" markerUnits="strokeWidth"><path d="M0,0 L0,2 L2,1 z" stroke="none" fill="red"/><path stroke-width=".3" stroke="white" fill="none" d="M0,0 L0,2 L2,1 z" /></marker></defs>';
var outerArrow = '<g class="outerArrow"> <path marker-end="url(#arrowHead)" d="M50,50 l'+x.toString()+','+y.toString()+'" /></g>';
var innerArrow = '<g class="innerArrow"><path marker-end="url(#arrowHead)" d="M50,50 l'+x.toString()+','+y.toString()+'" /></g>';
var svgFoot = '</svg>';
return svgHeader+outerArrow + '\n' + innerArrow + svgFoot;
}
document.getElementById('arrow').innerHTML = windArrow(20,45);
DEMO: https://jsfiddle.net/manespgav/at8y24dL/3/