地图热区随屏幕大小改变

今天学习了地图热区的制作,热区随页面大小换算

先给图片添加map

<div>
<img src='fg.png' width='100%' heigh='100%' usemap='#pagemap' border='0'/>
<map id="CribMap" name="pagemap">
   <area shape="poly" id="41" coords="244,90,244,210,322,210,295,150,322,90" href="#" title="凤德岭"
/>
   <area shape="poly" id="43" coords="350,90,350,210,433,210,461,150,405,90" href="#" title="天堂围"
/>
   <area shape="poly" id="42" coords="241,240,241,360,309,360,322,300,295,240" href="#" title="竹塘"
 />
   <area shape="poly" id="44" coords="240,390,240,510,364,510,350,450,336,390" href="#" title="黄洞"
 />
</map>
</div>

图片大小随页面变化,用js换算

<script type="text/javascript">
 
        adjust();
 
        var timeout = null;//onresize触发次数过多,设置定时器
        window.onresize = function () {
            clearTimeout(timeout);
            timeout = setTimeout(function () { window.location.reload(); }, 100);//页面大小变化,重新加载页面以刷新MAP
        }
 
        //获取MAP中元素属性
        function adjust() {
            var map = document.getElementById("CribMap");
            var element = map.childNodes;
            var itemNumber = element.length / 2;
            for (var i = 0; i < itemNumber - 1; i++) {
                var item = 2 * i + 1;
                var oldCoords = element[item].coords;
                var newcoords = adjustPosition(oldCoords);
                element[item].setAttribute("coords", newcoords);
            }
            var test = element;
        }
 
        //调整MAP中坐标
        function adjustPosition(position) {
            var pageWidth = document.body.clientWidth;//获取页面宽度
            var pageHeith = document.body.clientHeight;//获取页面高度
 
            var imageWidth = 1160;	//图片的长宽
            var imageHeigth = 990;
 
            var each = position.split(",");
            //获取每个坐标点
            for (var i = 0; i < each.length; i++) {
                each[i] = Math.round(parseInt(each[i]) * pageWidth / imageWidth).toString();//x坐标
                i++;
                each[i] = Math.round(parseInt(each[i]) * pageHeith / imageHeigth).toString();//y坐标
            }
            //生成新的坐标点
            var newPosition = "";
            for (var i = 0; i < each.length; i++) {
                newPosition += each[i];
                if (i < each.length - 1) {
                    newPosition += ",";
                }
            }
            return newPosition;
        }
</script>

转载自https://blog.csdn.net/crystalwood/article/details/13533401#commentBox

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值