4

我对 javascript 和 jQuery 还比较陌生,所以请记住,这可能是一个我看不到的明显解决方案。

我引用了 jQuery,它适用于其他事情。也许 imagemapster 参考有问题?我在这里下载它并像这样引用它。我也放入了“imagemapster.min.js”,但是当两者都在时它不起作用,当它们中的任何一个单独使用时它也不起作用。

<script type="text/javascript" src="../SiteAssets/css/jquery.imagemapster.js"></script>
<script type="text/javascript" src="../SiteAssets/css/jquery.imagemapster.min.js"></script>

我阅读了文档并几乎完全遵循了它(见下文),但它实际上对突出显示没有任何作用。相反,它会稍微弄乱它们的定位,从而破坏页面,这是没有意义的,因为 mapster 应该与定位无关。可点击区域也已向上移动并移出位置。它甚至没有给出任何错误;代码只是通过,除了我说的什么都没有发生。是的,我要强调的图像地图功能齐全,#downstairs、#upstairs 和 #offices 确实是图像标签的 ID,就像它们应该是的那样。

$(document).ready(function()
{
    $('#downstairs').mapster({
        fillOpacity: 0.5,
        mapKey: 'alt',
        isSelectable: false,
        render_highlight:
        {
            fillColor: '2aff00'
        }
    });

    $('#upstairs').mapster({
        fillOpacity: 0.5,
        mapKey: 'alt',
        isSelectable: false,
        render_highlight:
        {
            fillColor: '2aff00'
        }
    });

    $('#offices').mapster({
        fillOpacity: 0.5,
        mapKey: 'alt',
        isSelectable: false,
        render_highlight:
        {
        fillColor: '2aff00'
        }
    });
});

这是图像和地图的 html。他们三个都使用这种格式。

<div style="position:static;left:0px;top:0px">
<img id="downstairs" alt="downstairs" class="map" usemap="#downmap" style="visibility:visible;z-index:3; left: 10px; top: 54px;"
    src="sourceHere" width="1000" />
<map name="downmap" id="downmap">
    <!-- There is a large list of areas here that follow this format-->
    <area title="Portable 1" onclick="somefunction" coords="198,81,223,117" />
</map>
</div>
4

4 回答 4

5

检查您的地图区域是否定义了 href。例如:href="#"

于 2014-06-10T14:18:32.280 回答
1

在将脚本移到地图下方之前,我遇到了类似的问题。我在文档中找不到它,但我记得读过要使插件工作,必须先加载图像。您仍然需要在头部调用插件,但您需要将 javascript 放在图像映射之后。

于 2015-05-04T20:39:56.770 回答
0

当我第一次尝试 ImageMapster 时,我没有正确设置路径。您的区域路径必须从上到下环绕对象,然后从左到右,然后从下到上,直到它在开始时再次相遇。一旦我这样做了,ImageMapster 就“做了一些事情”。在我找到正确的路径之前,它看起来就像什么都没有发生。

您还必须告诉image使用map.

<div id="mapblock">
    <img id="map_image" src="/images/map.png" usemap="#map_map"/>
    <map name="map_map">
        <area data-key="AZ" full="item" href="#" coords="... " shape="poly" />
    </map>
</div>

此外,您在代码中使用的 ID# 应该是 animage的 ID,而不是地图的 ID。

此外,请确保您的地图区域在图像内(您可能必须设置width图像的,你知道的)否则悬停效果将不会显示。当我第一次尝试时,直到我确定我的区域在正确的位置之前,我什么也没看到。

我在这里写了一个使用 Photoshop 和 Illustrator生成的迷你教程。image-map这对我来说效果很好,而且image-map位置非常完美。

[在 OP 发布 imagemap html 之后]

<area title="Portable 1" onclick="somefunction" coords="198,81,223,117" />

啊,你的坐标很匹配,我想。把坐标想象成一条线。您已经描述了行的开头加上另一点 - 您必须告诉它进行完整循环。试试这个,看看会发生什么:

'coords="198,81, 223,117, 198,81"

于 2012-12-12T19:19:24.090 回答
0

对于 imagemapster 使用 jquery 2.1.3

<!-- not this
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> -->

<!-- use this one -->
<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>

对于图像映射器

<script src="http://www.outsharked.com/scripts/jquery.imagemapster.js"></script>

我也发生了同样的情况,图像地图悬停在更改版本后最终没有显示或工作正常。

供参考尝试下面的代码:

<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> -->

<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>

<script src="http://www.outsharked.com/scripts/jquery.imagemapster.js"></script>

<div style="clear: both; width: 500px; height: 50px; border: 1px solid black;" id="selections"></div>
<img id="vegetables" src="http://www.outsharked.com/imagemapster/examples/images/vegetables.jpg" usemap="#veg">
<map id="veg_map" name="veg">
    <area shape="poly" name="redpepper" coords="412,156, 427,161, 429,163, 444,153, 453,155, 457,159, 452,168, 459,174, 455,178, 460,179, 463,193, 460,203, 441,214, 436,217, 458,238, 469,257, 479,267, 478,269, 479,285, 458,309, 436,310, 414,305, 410,323, 397,334, 379,313, 389,316, 401,320, 399,305, 382,300, 371,290,
    367,296, 366,298,
    338,274, 332,272, 300,239, 316,238, 316,234, 313,230, 328,225, 333,213, 338,196, 333,181, 337,166, 345,145" href="#">
    <area shape="poly" name="celery" coords="147,131, 156,143, 163,146, 177,129, 175,138, 177,138, 182,144, 180,164, 148,169, 139,171, 144,180, 141,198, 139,208, 140,222, 127,237, 148,216, 163,212, 166,216, 160,223, 163,233, 153,281, 135,318, 129,313, 122,322, 117,320, 99,301, 98,293, 85,300, 80,303, 74,300,
    64,285, 76,272, 98,249,
    94,246, 72,261, 57,258, 62,251, 60,248, 47,228, 51,207, 71,195, 72,192, 38,202, 33,195, 30,173, 147,127" href="#">
    <area shape="poly" name="carrots" coords="175,74, 170,80, 154,85, 189,103, 190,111, 182,111, 179,98, 157,95, 142,111, 140,128, 38,169, 39,163, 74,143, 74,141, 56,135, 52,115, 79,111, 78,106, 63,98, 71,91, 81,88, 82,83, 91,75, 136,74, 174,70" href="#">
    <area shape="poly" name="asparagus" coords="224,25, 239,33, 244,36, 247,32, 327,23, 344,31, 343,36, 319,41, 315,42, 302,52, 272,61, 265,64, 270,73, 256,67, 248,60, 187,55, 192,58, 192,60, 184,64, 185,67, 176,67, 173,69, 142,67, 146,63, 135,59, 123,57, 142,44, 145,42, 143,39, 145,32, 207,38, 185,18, 212,19,
    220,22" href="#">
    <area shape="poly" name="squash" coords="388,26, 391,38, 394,43, 395,46, 425,58, 427,68, 428,92, 386,125, 371,132, 374,124, 377,118, 374,105, 371,105, 370,107, 364,102, 368,97, 356,87, 353,89, 348,86, 322,87, 314,100, 314,102, 282,85, 278,84, 273,74, 272,68, 319,46, 346,31" href="#">
    <area shape="poly" name="yellowpepper" coords="237,222, 246,254, 255,291, 262,323, 271,322, 285,350, 306,352, 307,365, 298,374, 285,366, 270,375, 249,378, 244,384, 231,389, 215,373, 210,363, 203,357, 199,368, 184,361, 175,349, 162,356, 140,340, 143,305, 161,252, 168,224, 188,240, 194,223, 198,232, 213,226, 224,224,
    229,218" href="#">
    <area shape="poly" name="broccoli" coords="341,89, 342,91, 360,95, 353,100, 360,104, 364,109, 368,115, 369,112, 367,110, 376,111, 373,123, 367,128, 362,128, 359,131, 348,134, 345,137, 340,138, 341,148, 334,167, 323,172, 315,165, 315,162, 312,165, 311,172, 293,167, 292,141, 298,136, 307,134, 322,129, 328,128,
    329,116, 319,109, 314,104,
    317,93, 332,84" href="#">
    <area shape="poly" name="broccoli" coords="328,178, 338,197, 337,202, 330,215, 328,217, 325,228, 307,234, 305,239, 287,225, 287,216, 286,212, 282,216, 277,212, 277,185, 284,179, 310,175" href="#">
    <area shape="poly" name="dip" coords="253,102, 277,100, 280,105, 290,107, 295,111, 304,130, 290,140, 287,147, 240,157, 238,159, 227,153, 203,146, 198,125, 200,116, 214,102, 231,102" href="#">

</map>

<script>
    // a cross reference of area names to text to be shown for each area
    var xref = {
        carrots: "<b>Carrots</b> are delicious and may turn your skin orange!",
        asparagus: "<b>Asparagus</b> is one of the first vegetables of the spring. " +
            "Being a dark green, it's great for you, and has interesting side effects.",
        squash: "<b>Squash</b> is a winter vegetable, and not eaten raw too much. Is that really squash?",
        redpepper: "<b>Red peppers</b> are actually the same as green peppers, they've just been left on " +
            "the vine longer. Delicious when fire-roasted.",
        yellowpepper: "Similar to red peppers, <b>yellow peppers</b> are sometimes sweeter.",
        celery: "<b>Celery</b> is a fascinating vegetable. Being mostly water, it actually takes your body " +
            "more calories to process it than it provides.",
        cucumbers: "<b>Cucumbers</b> are cool.",
        broccoli: "<b>Broccoli</b> is like a forest of goodness in your mouth. And very good for you. " +
            "Eat lots of broccoli!",
        dip: "Everything here is good for you but this one. <b>Don't be a dip!</b>"
    };

    var defaultDipTooltip = 'I know you want the dip. But it\'s loaded with saturated fat, just skip it ' +
        'and enjoy as many delicious, crisp vegetables as you can eat.';

    var image = $('#vegetables');

    image.mapster({
        fillOpacity: 0.4,
        fillColor: "d42e16",
        stroke: true,
        strokeColor: "3320FF",
        strokeOpacity: 0.8,
        strokeWidth: 4,
        singleSelect: true,
        mapKey: 'name',
        listKey: 'name',
        onClick: function(e) {
            var newToolTip = defaultDipTooltip;

            // update text depending on area selected
            $('#selections').html(xref[e.key]);

            // if Asparagus selected, change the tooltip
            if (e.key === 'asparagus') {
                newToolTip = "OK. I know I have come down on the dip before, but let's be real. " +
                    "Raw asparagus without any of that delicious ranch and onion dressing " +
                    "slathered all over it is not so good.";
            }
            image.mapster('set_options', {
                areas: [{
                    key: "dip",
                    toolTip: newToolTip
                }]
            });
        },
        showToolTip: true,
        toolTipClose: ["tooltip-click", "area-click"],
        areas: [{
            key: "redpepper",
            fillColor: "ffffff"
        }, {
            key: "yellowpepper",
            fillColor: "000000"
        }, {
            key: "carrots",
            fillColor: "000000"
        }, {
            key: "dip",
            toolTip: defaultDipTooltip
        }, {
            key: "asparagus",
            strokeColor: "FFFFFF"
        }]
    });
</script>
于 2021-06-27T05:38:35.723 回答