在JavaScript中给图像添加标记?

11

有人知道如何在JavaScript中向图像(而不是地图)添加标记吗?

理想情况下,我希望有一个类似于在地图上添加标记的处理程序 - 即单击会在单击点处显示一个标记,并返回单击点的x/y像素坐标。

这个可能吗?

谢谢
Richard

1个回答

12

是的,这是可能的。

虽然只使用JavaScript也完全可行,但我建议使用像JQuery这样的库。

方法是首先拥有一个带有标记的img元素,然后为你想要用作“地图”的图像添加click事件处理程序,通过移动你的标记到所点击的元素位置。

这里有一个未经测试的示例:

<img src="marker.png" id="marker" style="display: none; position: absolute;" />
<img src="map.png" id="map" />

<script type="text/javascript">
$('#map').click(function(e)
{
   $('#marker').css('left', e.pageX).css('top', e.pageY).show();
   // Position of the marker is now e.pageX, e.pageY 
   // ... which corresponds to where the click was.
});
</script>

编辑: 当然,这也完全可以不用 JQuery。 以下是一个无需使用 JQuery 的代码示例。

<img src="marker.png" id="marker" style="display: none; position: absolute;" />
<img src="map.png" id="map" />

<script type="text/javascript">
document.getElementById('map').onclick = function(e)
{
   with(document.getElementById('marker'))
   {
        style.left = e.pageX;
        style.top = e.pageY;
        style.display = 'block';
   }
   // Here you forward the coordinates e.pageX, e.pageY 
   // ... to whatever function that needs it
};
</script>

不要那么快... pageX 和 pageY 给出了相对于页面左上角的像素位置。 有没有办法获取图像内的像素位置? 如果没有,我想我可以找出图像角落的像素位置并进行减法运算,但这似乎有点混乱。 谢谢。 - Richard
有许多不同的非标准化属性可以指定坐标,但它们似乎非常依赖于浏览器。为了避免这种情况,我会像你说的那样减去图像的位置。 - Martin Nycander
非常感谢你们俩,Richard和Martin Nycander。 - Nihar
MouseEvent.offsetX和MouseEvent.offsetY在所有主要浏览器中以及IE6及以上版本中得到支持。https://developer.mozilla.org/zh-CN/docs/Web/API/MouseEvent/offsetX#Browser_compatibility - Oscar Barrett

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接