【问题标题】:Add a marker to an image in javascript?在javascript中为图像添加标记?
【发布时间】:2010-12-10 02:23:58
【问题描述】:

任何人都知道如何在 Javascript 中为图像(不是地图)添加标记?

理想情况下,我想要一个行为类似于向地图添加标记的处理程序 - 即 onclick 会使标记显示在被点击的点上,并返回被点击点的 x/y 像素坐标.

这可能吗?

干杯 理查德

【问题讨论】:

    标签: javascript image events onclick marker


    【解决方案1】:

    是的,有可能。

    虽然只使用 javascript 完全可行,但我会使用某种库,例如 JQuery

    方法是使用带有标记的 img 元素,然后将click-handler 添加到您要用作“地图”的图像中,moves 您的标记指向单击元素的位置.

    这是一个未经测试的例子:

    <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,这也是完全可能的。 下面是一个代码示例。

    <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
    • MouseEvent.offsetX 和 MouseEvent.offsetY 在所有主流浏览器中都受支持,从 IE6 开始。 developer.mozilla.org/en-US/docs/Web/API/MouseEvent/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2022-10-17
    相关资源
    最近更新 更多