功能:javascript
一、圖片放大縮小css
二、圖片移動html
三、圖片上作點標記java
PS程序員
一、後端程序員不容易,且行且珍惜後端
二、代碼不想封裝,累api
js代碼htm
/**************************calc picture start****************************************/ //圖片拖動開始位置 var startx = 0; var starty = 0; //圖片原始定位 var oLeft = 0; var oTop = 0; //圖片移動後的位置 var imgLeftPx = 0; var imgTopPx = 0; //圖標的位置 var markerLeft = 0; var markerTop = 0; //手指縮放,記錄兩根手指的位置 var pageX, pageY, initX, initY, isTouch = false; var start = []; var touchNumber = 0; function picMove() { $("#floor_backgroup").on("touchstart", function(e) { //判斷手指數 //if(e.changedTouches.length == 1) { var ttg = e.changedTouches[0]; //計算相對的位置 startx = ttg.pageX starty = ttg.pageY var el = $("#floor_backgroup"); oLeft = el.css("left"); oTop = el.css("top"); //} //手指按下時的手指所在的X,Y座標 pageX = e.targetTouches[0].pageX; pageY = e.targetTouches[0].pageY; //初始位置的X,Y 座標 initX = e.target.offsetLeft; initY = e.target.offsetTop; //記錄初始 一組數據 做爲縮放使用 start = e.touches; //獲得第一組兩個點 if(start.length == 2) { //表示手指已按下 isTouch = true; } touchNumber = start.length; return false; }) $("#floor_backgroup").on("touchmove ", function(e) { //calcPoint(e); //if(e.touches.length == 1) { if(!isTouch && touchNumber == 1) { var ttg = e.touches[0]; //計算相對的位置 var x = ttg.pageX - startx; var y = ttg.pageY - starty; x = x + parseInt(oLeft.replace("px", "")) y = y + parseInt(oTop.replace("px", "")) $("#floor_backgroup").css({ "left": x + "px", "top": y + "px" }) } //if(e.touches.length == 2) { if(isTouch) { //獲得第二組兩個點 var now = e.touches; //獲得縮放比例, getDistance 是勾股定理的一個方法 var p2 = now[1]; var p1 = now[0]; var x = (p2.pageX - p1.pageX) var y = (p2.pageY - p1.pageY) var value01 = Math.sqrt((x * x) + (y * y)) p2 = start[1] p1 = start[0] x = (p2.pageX - p1.pageX) y = (p2.pageY - p1.pageY) var value02 = Math.sqrt((x * x) + (y * y)) var scale = (value01 / value02); scale = scale.toFixed(8); scale = (scale - 1) / 80 + 1 //console.log(scale) var image = new Image() image.src = $("#floor_picture").attr("src") //console.log(image.height) if($("#floor_backgroup").height() * scale > image.height) { return false; } if($("#floor_backgroup").height() * scale < ($("#floor_img").height() * 0.7) && $("#floor_backgroup").width() * scale < ($("#floor_img").width() * 0.7)) { return false; } $("#floor_backgroup").css({ "height": ($("#floor_backgroup").height() * scale) + "px", "width": ($("#floor_backgroup").width() * scale) + "px" }) } return false; }) $("#floor_backgroup").on("touchend ", function(e) { if(isTouch) { isTouch = false; } if(!isTouch && touchNumber == 1){ console.log(1111) var ttg = e.changedTouches[0]; var x = ttg.pageX - startx; var y = ttg.pageY - starty; imgLeftPx = parseInt($("#floor_backgroup").css("left").replace("px", "")) imgTopPx = parseInt($("#floor_backgroup").css("top").replace("px", "")) if(x == 0 && y == 0) { //$("#floor_img").click(); calcPoint(e); } } return false; }) //圖標touch事件 $("#floor_marker").on("touchstart", function(e) { var ttg = e.changedTouches[0]; //記錄手指放下去的位置 markerLeft = ttg.pageX markerTop = ttg.pageY // //e.preventDefault(); return false; }) $("#floor_marker").on("touchmove", function(e) { var ttg = e.changedTouches[0]; //拖動過程當中獲取到的位置 var x = ttg.pageX; var y = ttg.pageY; //計算拖動的距離 x = x - markerLeft; y = y - markerTop; markerLeft = ttg.pageX; markerTop = ttg.pageY; //在原基礎上增長移動的距離 var mleft = $("#floor_marker").css("left").replace("%", "") var mtop = $("#floor_marker").css("top").replace("%", "") var h = $("#floor_backgroup").height() var w = $("#floor_backgroup").width() x = x + parseFloat(mleft) / 100 * w; y = y + parseFloat(mtop) / 100 * h; imgleft = x / w * 100; imgtop = y / h * 100; //console.log(x) $("#floor_marker").css({ "left": imgleft + "%", "top": imgtop + "%" }) //e.preventDefault(); return false; }) $("#floor_marker").on("touchend", function(e) { //e.preventDefault(); return false; }) } var imgleft = 0; var imgtop = 0; function calcPoint(e) { var ttg = e.changedTouches[0]; var curr = e.target; var x0 = curr.offsetLeft + imgLeftPx var y0 = $("#item2").height() + imgTopPx //curr.offsetTop //計算相對的位置 var x = ttg.pageX - x0; var y = ttg.pageY - y0; var h = $("#floor_picture").height() var w = $("#floor_picture").width() imgleft = x / w * 100; imgtop = y / h * 100; //console.log(x) $("#floor_marker").css({ "left": imgleft + "%", "top": imgtop + "%" }) } /**************************calc picture end****************************************/
html代碼blog
<div id="floor_img" style="height: 100%;width: 100%; position: relative; z-index: 3; display: block; background-color:rgba(0,0,0,0.7);overflow: hidden;"> <div id="floor_backgroup" style="position: absolute;width: 100%; " > <!--圖片--> <img id="floor_picture" style="max-height: 100%; max-width: 100%;" src="../images/bg.png"> <!--標記圖片--> <img id="floor_marker" src="http://a.amap.com/jsapi_demos/static/demo-center/icons/poi-marker-default.png" style="position: absolute; height: 68px; margin: -64px 0 0 -26px ; width: 53px; left: 0; top: 0;"> </div> </div>