map元素area热区坐标自适应窗口大小

业务需求:点击图片热区跳转到不同的链接地址,同时要自适应窗口尺寸的变化。

问题:热区坐标点不会随着窗口调整变化

解决思路:获取初始的坐标点与图片宽高的比例,然后用比例乘以调整后的窗口宽高,就获得了新的坐标点

根据初始坐标计算新坐标:

function adjustPosition(position) {
            // 获取宽高
            var pageWidth = document.body.clientWidth;
            var pageHeight = document.body.clientHeight;
              // 图片原始尺寸
            var imageWidth = 1423;
            var imageHeigth = 1077;  
              
            var each = position.split(",");  
 
            for (var i = 0; i < each.length; i++) { 
                if(i%2==0){
                    // 新的y轴坐标
                    each[i] = Math.round(parseInt(each[i]) * pageHeight / imageHeigth).toString();
                }else{
                    // 新的x轴坐标
                    each[i] = Math.round(parseInt(each[i]) * pageWidth / imageWidth).toString();
                }
            }  
            var newPosition = "";  
            for (var j = 0; j < each.length; j++) {  
                newPosition += each[j];  
                if (j < each.length - 1) {  
                    newPosition += ",";  
                }  
            }  
            return newPosition;  
        }

获取coords属性的坐标值,并用新计算出来的坐标点进行替换:

function adjust() {  
            var map = document.getElementById("CribMap");  
            var area=map.getElementsByTagName('area');  
 
            for (var i = 0; i < area.length; i++) {  
                var oldCoords = area[i].getAttribute("coords");  
                var newcoords = adjustPosition(oldCoords);  
                area[i].setAttribute("coords", newcoords);  
            }   
        }  


运行:adjust(); 


原文:https://blog.csdn.net/sinat_37881704/article/details/80914194 

原文地址:https://www.cnblogs.com/sunwk/p/10071424.html