日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

在canvas上进行绘图,实现要素配准

發布時間:2023/12/29 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在canvas上进行绘图,实现要素配准 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于要求上采用Html來實現配準的畫圖功能(如果直接采用超圖的接口、ArcGIS js API等會簡單很多),所以有如下思路:地圖采用了超圖的接口,獲取其已經發布的服務,地圖顯示在一個Div中,在地圖上方疊加一個Canvas進行畫圖。所畫圖形經過平移旋轉(縮放會有問題)后,配準地圖上的要素,然后將屏幕坐標轉換為地圖坐標,得到配準結果。(此配準不是完全的影像配準,其過程有要求:所畫圖形不能發生形變)。

JS 和html 沒有做分離,所有代碼如下,有時間再回來編輯:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
? ? <title>第5個測試頁面</title>
? ? <style type="text/css">
? ? ? ? *
? ? ? ? {
? ? ? ? ? ? margin: 0 0 0 0;
? ? ? ? ? ? padding: 0 0 0 0;
? ? ? ? }
? ? ? ? body
? ? ? ? {
? ? ? ? ? ? overflow:auto;
? ? ? ? ? ? background: #fff;
? ? ? ? }
? ? ? ? #map, #canvasOne
? ? ? ? {
? ? ? ? ? ? position: absolute;
? ? ? ? ? ? width: 1000px;
? ? ? ? ? ? height: 1000px;
? ? ? ? ? ? top: 20px;
? ? ? ? ? ? left: 30px;
? ? ? ? }
? ? ? ? #rightdiv
? ? ? ? {
? ? ? ? ? ? position:absolute;
? ? ? ? ? ? top:20px;
? ? ? ? ? ? left:1060px;
? ? ? ? ? ? width: 380px;
? ? ? ? ? ? height: 1000px;
? ? ? ? ? ? display: inline-block;
? ? ? ? ? ? overflow: hidden;
? ? ? ? }
? ? ? ? #FirstFloorDiv, #SecondFloorDiv
? ? ? ? {
? ? ? ? ? ? display: inline-block;
? ? ? ? }
? ? </style>
? ? <script type="text/javascript" src="libs/SuperMap.Include.js"></script>
? ? <script type="text/javascript">
? ? ? ? ///Canvas的所有畫圖功能
? ? ? ? var JsonString = false; ? ? ? //記錄Json的字符串(原始)
? ? ? ? var Coordinates = false; ? ? ?//記錄Json解析出來的坐標串(原始)
? ? ? ? var Rectangle = false; ? ? ? ?//記錄外包矩形框(原始)[minX, minY, maxX, maxY]
? ? ? ? var Circle = false; ? ? ? ?//記錄外包圓形(原始)[Center,Radius];Center:X,Y;
? ? ? ? var canvas = false;


? ? ? ? var Before_Coordinates = false;
? ? ? ? var After_Coordinates = false;


? ? ? ? var Point_FirstSelect = false;
? ? ? ? var Point_FirstSelect_index = false;
? ? ? ? var Point_SecondSelect = false;
? ? ? ? var Point_SecondSelect_index = false;
? ? ? ? var SwitchCase = 1; ? ? ? ? //默認為平移
? ? ? ? var isOpenPan = 1; ? ? ? ? ? //是否為平移
? ? ? ? var isOpenRotate = 2; ? ? ? ? ? //是否為旋轉
? ? ? ? var thelta = false; //旋轉角
? ? ? ? var banjing = 80; ? ? ? ? ? ? ? ? ?//縮放比例半徑
? ? ? ? var MapCenter = { X: 550, Y: 350 };//縮放平移的地圖中心位置


? ? ? ? //解析Json格式,返回Building坐標數組
? ? ? ? function AnalyzeJson2Cos(JsonString) {
? ? ? ? ? ? var obj = eval('(' + JsonString + ')');
? ? ? ? ? ? return obj.Building.Coordinates;
? ? ? ? }
? ? ? ? //計算坐標串的外包矩形
? ? ? ? function CompRectangle(Cos) {
? ? ? ? ? ? var minX = Cos[0].X;
? ? ? ? ? ? var minY = Cos[0].Y;
? ? ? ? ? ? var maxX = Cos[0].X;
? ? ? ? ? ? var maxY = Cos[0].Y;
? ? ? ? ? ? for (var i = 1; i < Cos.length; i++) {
? ? ? ? ? ? ? ? if (Cos[i].X > maxX) maxX = Cos[i].X;
? ? ? ? ? ? ? ? if (Cos[i].X < minX) minX = Cos[i].X;
? ? ? ? ? ? ? ? if (Cos[i].Y > maxY) maxY = Cos[i].Y;
? ? ? ? ? ? ? ? if (Cos[i].Y < minY) minY = Cos[i].Y;
? ? ? ? ? ? }
? ? ? ? ? ? Rectangle = { minX: minX, minY: minY, maxX: maxX, maxY: maxY };
? ? ? ? ? ? return Rectangle;
? ? ? ? }
? ? ? ? //計算坐標串的外包圓形
? ? ? ? function CompCircle(Rectangle) {
? ? ? ? ? ? var Center = { X: (Rectangle.maxX - Rectangle.minX) + Rectangle.minX, Y: (Rectangle.maxY - Rectangle.minY) + Rectangle.minY };
? ? ? ? ? ? var Radius = 0.5 * Math.sqrt((Rectangle.maxX - Rectangle.minX) * (Rectangle.maxX - Rectangle.minX) + (Rectangle.maxY - Rectangle.minY) * (Rectangle.maxY - Rectangle.minY));
? ? ? ? ? ? Circle = { Center: Center, Radius: Radius };
? ? ? ? ? ? return Circle;
? ? ? ? }
? ? ? ? //計算兩點距離
? ? ? ? function CompDistance(P1, P2) {
? ? ? ? ? ? return Math.sqrt((P1.X - P2.X) * (P1.X - P2.X) + (P1.Y - P2.Y) * (P1.Y - P2.Y));
? ? ? ? }
? ? ? ? //計算兩點構成的直線與正北方向的夾角
? ? ? ? function ComputeAngle(FPoint, LPoint) {
? ? ? ? ? ? var dRotateAngle;
? ? ? ? ? ? if (FPoint.Y === LPoint.Y) {
? ? ? ? ? ? ? ? if (FPoint.X < LPoint.X) { dRotateAngle = Math.PI / 2; }
? ? ? ? ? ? ? ? else { dRotateAngle = Math.PI / 2 * 3; }
? ? ? ? ? ? ? ? return dRotateAngle;
? ? ? ? ? ? }
? ? ? ? ? ? else {
? ? ? ? ? ? ? ? var deltX = Math.abs(FPoint.X - LPoint.X);
? ? ? ? ? ? ? ? var deltY = Math.abs(FPoint.Y - LPoint.Y);
? ? ? ? ? ? ? ? dRotateAngle = Math.atan(deltX / deltY);
? ? ? ? ? ? }


? ? ? ? ? ? var PI = Math.PI;
? ? ? ? ? ? //如果下一點的橫坐標大于前一點(在第一和第四象限)
? ? ? ? ? ? if (LPoint.X >= FPoint.X) {
? ? ? ? ? ? ? ? //在第一象限(0<=dRotateAngle<=90)
? ? ? ? ? ? ? ? if (LPoint.Y <= FPoint.Y) {
? ? ? ? ? ? ? ? ? ? dRotateAngle = dRotateAngle;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else {
? ? ? ? ? ? ? ? ? ? dRotateAngle = PI - dRotateAngle;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? else//(在第二和第三象限)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? if (LPoint.Y <= FPoint.Y) {
? ? ? ? ? ? ? ? ? ? dRotateAngle = 2 * PI - dRotateAngle;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else {
? ? ? ? ? ? ? ? ? ? dRotateAngle = PI + dRotateAngle;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? return dRotateAngle;
? ? ? ? }


? ? ? ? //一個簡單的莫卡托轉經緯度
? ? ? ? function Mercator2lonLat(mercator) {
? ? ? ? ? ? var lonLat = { X: 0, Y: 0 };
? ? ? ? ? ? var x = mercator.X / 20037508.34 * 180;
? ? ? ? ? ? var y = mercator.Y / 20037508.34 * 180;
? ? ? ? ? ? y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2);
? ? ? ? ? ? lonLat.X = x;
? ? ? ? ? ? lonLat.Y = y;
? ? ? ? ? ? alert(lonLat.X);
? ? ? ? ? ? return lonLat;
? ? ? ? }




//將所有坐標縮放到地圖中心位置(目前是通過外包圓中心進行縮放,這樣會導致某些問題,下一步考慮是否采用坐標原點進行縮放)
function ZoomSystem(objCoords) {
? ?var objCircle = CompCircle(CompRectangle(objCoords));
? ?//進行縮放,對所有坐標進行縮放 要分四個象限去算
? ?var scale = banjing / objCircle.Radius;
? ?if (scale > 1.5 || scale < 0.5) {
? ? ? ?for (var i = 0; i < Coordinates.length; i++) {
? ? ? ? ? ?var length = CompDistance(objCircle.Center, objCoords[i]);
? ? ? ? ? ?var NorthAngle = ComputeAngle(objCircle.Center, objCoords[i]);
? ? ? ? ? ?if (objCoords[i].X > objCircle.Center.X) {
? ? ? ? ? ? ? ?objCoords[i].X -= Math.abs(length * (1 - scale) * Math.sin(NorthAngle));
? ? ? ? ? ? ? ?if (objCoords[i].Y > objCircle.Center.Y) {
? ? ? ? ? ? ? ? ? ?objCoords[i].Y -= Math.abs(length * (1 - scale) * Math.cos(NorthAngle));
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?else {
? ? ? ? ? ? ? ? ? ?objCoords[i].Y += Math.abs(length * (1 - scale) * Math.cos(NorthAngle));
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ? ? ?else {
? ? ? ? ? ? ? ?objCoords[i].X += Math.abs(length * (1 - scale) * Math.sin(NorthAngle));
? ? ? ? ? ? ? ?if (objCoords[i].Y > objCircle.Center.Y) {
? ? ? ? ? ? ? ? ? ?objCoords[i].Y -= Math.abs(length * (1 - scale) * Math.cos(NorthAngle));
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?else {
? ? ? ? ? ? ? ? ? ?objCoords[i].Y += Math.abs(length * (1 - scale) * Math.cos(NorthAngle));
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?}
? ? ? ?objCircle = CompCircle(CompRectangle(objCoords));
? ?}
? ?//平移到MapCenter
? ?var deltX = objCircle.Center.X - MapCenter.X;
? ?var deltY = objCircle.Center.Y - MapCenter.Y;


? ?for (var i = 0; i < Coordinates.length; i++) {
? ? ? ?objCoords[i].X -= deltX;
? ? ? ?objCoords[i].Y -= deltY;
? ?}
? ?return objCoords;
}


//在Canvas界面上畫出 原始 圖形
function drawJson() {
? ? ? ? ? ? //獲取Json序列中的坐標串
? ? ? ? ? ? JsonString = document.getElementById('Jsontxt').value;
? ? ? ? ? ? Coordinates = AnalyzeJson2Cos(JsonString);
? ? ? ? ? ? //獲取待操作的坐標數組
? ? ? ? ? ? Before_Coordinates = copyObject(ZoomSystem(Coordinates));
? ? ? ? ? ? After_Coordinates = copyObject(ZoomSystem(Coordinates));


? ? ? ? ? ? //初始化canvas進行畫圖
? ? ? ? ? ? var canvas = document.getElementById("canvasOne");
? ? ? ? ? ? //簡單地檢測當前瀏覽器是否支持Canvas對象,以免在一些不支持html5的瀏覽器中提示語法錯誤
? ? ? ? ? ? if (canvas.getContext) {
? ? ? ? ? ? ? ? //獲取對應的CanvasRenderingContext2D對象(畫筆)
? ? ? ? ? ? ? ? var ctx = canvas.getContext("2d");
? ? ? ? ? ? ? ? //開始一個新的繪制路徑
? ? ? ? ? ? ? ? ctx.beginPath();
? ? ? ? ? ? ? ? ctx.strokeStyle = "blue";
? ? ? ? ? ? ? ? //設置路徑起點坐標
? ? ? ? ? ? ? ? ctx.moveTo(Coordinates[0].X, Coordinates[0].Y);
? ? ? ? ? ? ? ? for (var i = 1; i < Coordinates.length; i++) {
? ? ? ? ? ? ? ? ? ? ctx.lineTo(Coordinates[i].X, Coordinates[i].Y);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //先關閉繪制路徑。注意,此時將會使用直線連接當前端點和起始端點。
? ? ? ? ? ? ? ? ctx.closePath();
? ? ? ? ? ? ? ? ctx.lineWidth = 1;
? ? ? ? ? ? ? ? //最后,按照繪制路徑畫出直線
? ? ? ? ? ? ? ? ctx.stroke();
? ? ? ? ? ? }
? ? ? ? ? ? //初始化。
? ? ? ? ? ? windowLoadHandler();
? ? ? ? }


? ? ? ? var Debugger = function () { };
? ? ? ? Debugger.log = function (message) {
? ? ? ? ? ? try {
? ? ? ? ? ? ? ? console.log(message);
? ? ? ? ? ? }
? ? ? ? ? ? catch (exception) {
? ? ? ? ? ? ? ? return;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? //初始化入口
? ? ? ? function windowLoadHandler() {
? ? ? ? ? ? canvasApp();
? ? ? ? }
? ? ? ? //判斷瀏覽器對canvas是否支持
? ? ? ? function canvasSupport() {
? ? ? ? ? ? //return Modernizr.canvas;
? ? ? ? ? ? return true;
? ? ? ? }


? ? ? ? function canvasApp() {
? ? ? ? ? ? if (!canvasSupport()) {
? ? ? ? ? ? ? ? return;
? ? ? ? ? ? }
? ? ? ? ? ? canvas = document.getElementById("canvasOne");
? ? ? ? ? ? var context = canvas.getContext("2d");
? ? ? ? ? ? init();
? ? ? ? ? ? var shapes;
? ? ? ? ? ? var dragIndex;
? ? ? ? ? ? var dragging;
? ? ? ? ? ? var mouseX;
? ? ? ? ? ? var mouseY;
? ? ? ? ? ? var dragHoldX;
? ? ? ? ? ? var dragHoldY;


? ? ? ? ? ? function init() {
? ? ? ? ? ? ? ? shapes = Coordinates;
? ? ? ? ? ? ? ? drawScreen(Coordinates);
? ? ? ? ? ? ? ? canvas.addEventListener("mousedown", mouseDownListener, false);
? ? ? ? ? ? }


? ? ? ? ? ? function mouseDownListener(evt) {
? ? ? ? ? ? ? ? //如果是右鍵點擊,直接進入旋轉步驟
? ? ? ? ? ? ? ? if (evt.button == 2) { ChangeSwitcher(isOpenRotate); }
? ? ? ? ? ? ? ? //else if (evt.button == 1) { ChangeSwitcher(isOpenPan); }


? ? ? ? ? ? ? ? var highestIndex = -1;
? ? ? ? ? ? ? ? var bRect = canvas.getBoundingClientRect();
? ? ? ? ? ? ? ? mouseX = (evt.clientX - bRect.left) * (canvas.width / bRect.width);
? ? ? ? ? ? ? ? mouseY = (evt.clientY - bRect.top) * (canvas.height / bRect.height);
? ? ? ? ? ? ? ? //找到哪個是被選中的點
? ? ? ? ? ? ? ? switch (SwitchCase) {
? ? ? ? ? ? ? ? ? ? case isOpenPan:
? ? ? ? ? ? ? ? ? ? ? ? //find which shape was clicked
? ? ? ? ? ? ? ? ? ? ? ? for (var i = 0; i < Coordinates.length; i++) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (hitTest(Before_Coordinates[i], mouseX, mouseY)) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dragging = true;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (i > highestIndex) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //We will pay attention to the point on the object where the mouse is "holding" the object:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dragHoldX = mouseX - Before_Coordinates[i].X;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dragHoldY = mouseY - Before_Coordinates[i].Y;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? highestIndex = i;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dragIndex = i;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Point_FirstSelect = copyObject(Before_Coordinates[dragIndex]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Point_FirstSelect_index = dragIndex;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case isOpenRotate:
? ? ? ? ? ? ? ? ? ? ? ? //find which shape was clicked
? ? ? ? ? ? ? ? ? ? ? ? for (var i = 0; i < Coordinates.length; i++) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (hitTest(Before_Coordinates[i], mouseX, mouseY)) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dragging = true;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (i == Point_FirstSelect_index) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? alert("控制點選擇出現重復!");
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (i > highestIndex) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //We will pay attention to the point on the object where the mouse is "holding" the object:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dragHoldX = mouseX - Before_Coordinates[i].X;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dragHoldY = mouseY - Before_Coordinates[i].Y;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? highestIndex = i;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dragIndex = i;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Point_FirstSelect = copyObject(Before_Coordinates[Point_FirstSelect_index]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Point_SecondSelect = copyObject(Before_Coordinates[dragIndex]);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Point_SecondSelect_index = dragIndex;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? default: break;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? if (dragging) { window.addEventListener("mousemove", mouseMoveListener, false);}
? ? ? ? ? ? ? ? canvas.removeEventListener("mousedown", mouseDownListener, false);
? ? ? ? ? ? ? ? window.addEventListener("mouseup", mouseUpListener, false);
? ? ? ? ? ? ? ? //code below prevents the mouse down from having an effect on the main browser window:
? ? ? ? ? ? ? ? if (evt.preventDefault) {
? ? ? ? ? ? ? ? ? ? evt.preventDefault();
? ? ? ? ? ? ? ? } //standard
? ? ? ? ? ? ? ? else if (evt.returnValue) {
? ? ? ? ? ? ? ? ? ? evt.returnValue = false;
? ? ? ? ? ? ? ? } //older IE
? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? }




? ? ? ? ? ? var isMouseUp = false;
? ? ? ? ? ? function mouseUpListener(evt) {
? ? ? ? ? ? ? ? if (!isMouseUp) {
? ? ? ? ? ? ? ? ? ? canvas.addEventListener("mousedown", mouseDownListener, false);
? ? ? ? ? ? ? ? ? ? window.removeEventListener("mouseup", mouseUpListener, false);
? ? ? ? ? ? ? ? ? ? if (dragging) {
? ? ? ? ? ? ? ? ? ? ? ? dragging = true;
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? isMouseUp = true;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? else {
? ? ? ? ? ? ? ? ? ? canvas.addEventListener("mousedown", mouseDownListener, false);
? ? ? ? ? ? ? ? ? ? window.removeEventListener("mouseup", mouseUpListener, false);
? ? ? ? ? ? ? ? ? ? if (dragging) {
? ? ? ? ? ? ? ? ? ? ? ? dragging = false;
? ? ? ? ? ? ? ? ? ? ? ? window.removeEventListener("mousemove", mouseMoveListener, false);
? ? ? ? ? ? ? ? ? ? ? ? Before_Coordinates = copyObject(After_Coordinates);
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? isMouseUp = false;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }


? ? ? ? ? ? function mouseMoveListener(evt) {
? ? ? ? ? ? ? ? var posX;
? ? ? ? ? ? ? ? var posY;
? ? ? ? ? ? ? ? var shapeRad = shapes[dragIndex].rad;
? ? ? ? ? ? ? ? var minX = shapeRad;
? ? ? ? ? ? ? ? var maxX = canvas.width - shapeRad;
? ? ? ? ? ? ? ? var minY = shapeRad;
? ? ? ? ? ? ? ? var maxY = canvas.height - shapeRad;
? ? ? ? ? ? ? ? //getting mouse position correctly?
? ? ? ? ? ? ? ? var bRect = canvas.getBoundingClientRect();
? ? ? ? ? ? ? ? mouseX = (evt.clientX - bRect.left) * (canvas.width / bRect.width);
? ? ? ? ? ? ? ? mouseY = (evt.clientY - bRect.top) * (canvas.height / bRect.height);


? ? ? ? ? ? ? ? //clamp x and y positions to prevent object from dragging outside of canvas,dragHold是緩沖半徑
? ? ? ? ? ? ? ? posX = mouseX - dragHoldX;
? ? ? ? ? ? ? ? posX = (posX < minX) ? minX : ((posX > maxX) ? maxX : posX);
? ? ? ? ? ? ? ? posY = mouseY - dragHoldY;
? ? ? ? ? ? ? ? posY = (posY < minY) ? minY : ((posY > maxY) ? maxY : posY);
? ? ? ? ? ? ? ? //這里要重新計算坐標,可以根據這個值來計算坐標偏移量
? ? ? ? ? ? ? ? After_Coordinates[dragIndex].X = posX;
? ? ? ? ? ? ? ? After_Coordinates[dragIndex].Y = posY;
? ? ? ? ? ? ? ? var MousePoint = { X: posX, Y: posY };
? ? ? ? ? ? ? ? switch (SwitchCase)
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? case isOpenPan:
? ? ? ? ? ? ? ? ? ? ? ? //所有坐標的平移差量
? ? ? ? ? ? ? ? ? ? ? ? var deltaX = After_Coordinates[dragIndex].X - Before_Coordinates[dragIndex].X;
? ? ? ? ? ? ? ? ? ? ? ? var deltaY = After_Coordinates[dragIndex].Y - Before_Coordinates[dragIndex].Y;
? ? ? ? ? ? ? ? ? ? ? ? showCos(deltaX, deltaY, MousePoint);
? ? ? ? ? ? ? ? ? ? ? ? moveOriginPic2Current(deltaX, deltaY);
? ? ? ? ? ? ? ? ? ? ? ? drawScreen(After_Coordinates);
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? case isOpenRotate:
? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? //計算夾角
? ? ? ? ? ? ? ? ? ? ? ? var jd1 = ComputeAngle(Point_FirstSelect, Point_SecondSelect);
? ? ? ? ? ? ? ? ? ? ? ? var jd2 = ComputeAngle(Point_FirstSelect, MousePoint);
? ? ? ? ? ? ? ? ? ? ? ? var jd_abs = Math.abs(jd1 - jd2);
? ? ? ? ? ? ? ? ? ? ? ? //順時針轉逆時針
? ? ? ? ? ? ? ? ? ? ? ? if (jd1 < jd2) thelta = (2 * Math.PI - jd_abs);
? ? ? ? ? ? ? ? ? ? ? ? else thelta = jd_abs;
? ? ? ? ? ? ? ? ? ? ? ? showCos2(thelta,MousePoint);
? ? ? ? ? ? ? ? ? ? ? ? rotateCoords(thelta, Point_FirstSelect, MousePoint);
? ? ? ? ? ? ? ? ? ? ? ? drawScreen(After_Coordinates);
? ? ? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? ? ? break; ;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }


? ? ? ? ? ? //對所有坐標進行平移
? ? ? ? ? ? function moveOriginPic2Current(deltX, deltY) {
? ? ? ? ? ? ? ? for (var i = 0; i < Coordinates.length; i++) {
? ? ? ? ? ? ? ? ? ? After_Coordinates[i].X = Before_Coordinates[i].X + deltX;
? ? ? ? ? ? ? ? ? ? After_Coordinates[i].Y = Before_Coordinates[i].Y + deltY;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? ? ? //對所有坐標進行旋轉變換,FPoint為所選擇的第一個點,angle記錄為與逆時針旋轉角度,mousePoint是當前鼠標點
? ? ? ? ? ? function rotateCoords(angle, FPoint, mousePoint) {
? ? ? ? ? ? ? ? for (var i = 0; i < Coordinates.length; i++) {
? ? ? ? ? ? ? ? ? ? if (i != Point_FirstSelect_index) {
? ? ? ? ? ? ? ? ? ? ? ? //canvas的坐標軸是發生轉變的
? ? ? ? ? ? ? ? ? ? ? ? var x0 = (Before_Coordinates[i].X - FPoint.X) * Math.cos(angle) - (FPoint.Y - Before_Coordinates[i].Y) * Math.sin(angle) + FPoint.X;
? ? ? ? ? ? ? ? ? ? ? ? var y0 = (Before_Coordinates[i].X - FPoint.X) * Math.sin(angle) + (FPoint.Y - Before_Coordinates[i].Y) * Math.cos(angle) - FPoint.Y;
? ? ? ? ? ? ? ? ? ? ? ? After_Coordinates[i].X = x0;
? ? ? ? ? ? ? ? ? ? ? ? After_Coordinates[i].Y = -y0; //y=-y
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }


? ? ? ? ? ? //判斷點擊的位置是否為拾取點
? ? ? ? ? ? function hitTest(shape, mx, my) {
? ? ? ? ? ? ? ? var dx = mx - shape.X;
? ? ? ? ? ? ? ? var dy = my - shape.Y;
? ? ? ? ? ? ? ? var d = document.getElementById('BufferRange').value;
? ? ? ? ? ? ? ? return ((dx * dx + dy * dy) < (d * d)); //所選的緩沖半徑為4
? ? ? ? ? ? }


? ? ? ? ? ? //根據坐標數組在canvas上畫圖(全部為直線)
? ? ? ? ? ? function drawShapes(Coords) {
? ? ? ? ? ? ? ? context.beginPath();
? ? ? ? ? ? ? ? context.strokeStyle = "blue";
? ? ? ? ? ? ? ? //設置路徑起點坐標
? ? ? ? ? ? ? ? context.moveTo(Coords[0].X, Coords[0].Y);
? ? ? ? ? ? ? ? for (var i = 1; i < Coordinates.length; i++) {
? ? ? ? ? ? ? ? ? ? context.lineTo(Coords[i].X, Coords[i].Y);


? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? //先關閉繪制路徑。注意,此時將會使用直線連接當前端點和起始端點。
? ? ? ? ? ? ? ? context.lineWidth = 2;
? ? ? ? ? ? ? ? //最后,按照繪制路徑畫出直線
? ? ? ? ? ? ? ? context.closePath();
? ? ? ? ? ? ? ? context.stroke();
? ? ? ? ? ? }


? ? ? ? ? ? //畫圖的屏幕處理
? ? ? ? ? ? function drawScreen(coords) {
? ? ? ? ? ? ? ? context.clearRect(0, 0, canvas.width, canvas.height);
? ? ? ? ? ? ? ? drawShapes(coords);
? ? ? ? ? ? }
? ? ? ? }


? ? ? ? //顯示備準的結果
? ? ? ? function showResult(cos) {
? ? ? ? ? ? var s = "";
? ? ? ? ? ? s += "<From x,y> <space> <To x,y> \r\n"
? ? ? ? ? ? for (var i = 0; i < Coordinates.length; i++) {
? ? ? ? ? ? ? ? //cos[i] = Mercator2lonLat(cos[i]);
? ? ? ? ? ? ? ? s += Coordinates[i].X + "," + Coordinates[i].Y + " " + cos[i].lon + "," + cos[i].lat + "\r\n";
? ? ? ? ? ? }
? ? ? ? ? ? document.getElementById('Result').value = s;
? ? ? ? }
///地圖操作
? ? ? ? var map, layer;
? ? ? ? //var url = "http://101.251.247.242:8090/iserver/services/map-jingjin/rest/maps/京津地區地圖";
? ? ? ? //var Center_LonLat =new SuperMap.LonLat(117.01, 40.04);


? ? ? ? var url = "http://101.251.247.242:8090/iserver/services/map-changchun/rest/maps/長春市區圖";
? ? ? ? var Center_LonLat =new SuperMap.LonLat(5105, -3375);


? ? ? ? var vectorLayer;
? ? ? ? var FeatureStyle = {
? ? ? ? ? ? strokeColor: "#304DBE",
? ? ? ? ? ? strokeWidth: 2,
? ? ? ? ? ? pointerEvents: "visiblePainted",
? ? ? ? ? ? fillColor: "#304DBE",
? ? ? ? ? ? fillOpacity: 0.8
? ? ? ? };


? ? ? ? function init() {
? ? ? ? ? ? map = new SuperMap.Map("map", { controls: [
? ? ? ? ? ? new SuperMap.Control.Navigation(),
? ? ? ? ? ? new SuperMap.Control.Zoom(),
? ? ? ? ? ? new SuperMap.Control.MousePosition()]
? ? ? ? ? ? });
? ? ? ? ? ? layer = new SuperMap.Layer.TiledDynamicRESTLayer("China", url, null, { maxResolution: "auto" });
? ? ? ? ? ? layer.events.on({ "layerInitialized": addLayer });


? ? ? ? ? ? //添加圖層
? ? ? ? ? ? vectorLayer = new SuperMap.Layer.Vector("Vector Layer", { renderers: ["Canvas2"] });
? ? ? ? ? ? map.addLayer(vectorLayer);
? ? ? ? ? ? //地圖上移動鼠標時顯示坐標
? ? ? ? ? ? map.events.on({
? ? ? ? ? ? ? ? "mousemove": function (e) {
? ? ? ? ? ? ? ? ? ? var Position = e.xy.clone();
? ? ? ? ? ? ? ? ? ? var pixcel = new SuperMap.Pixel(e.layerX, e.layerY);
? ? ? ? ? ? ? ? ? ? var currPoint = map.getLonLatFromPixel(pixcel);
? ? ? ? ? ? ? ? ? ? document.getElementById('Coords_pic').value = ?currPoint.lon + "," + currPoint.lat;
? ? ? ? ? ? ? ? }
? ? ? ? ? ? });


? ? ? ? }
? ? ? ? //初始化完成后添加圖層
? ? ? ? function addLayer() {
? ? ? ? ? ? map.addLayer(layer);
? ? ? ? ? ? map.setCenter(Center_LonLat, 0);
? ? ? ? }


? ? ? ? //調整canvas、pic的層次關系,控制canvas在上面一層
? ? ? ? function ShowCanvas() {
? ? ? ? ? ? document.getElementById('canvasOne').style.zIndex = 2;
? ? ? ? ? ? document.getElementById('map').style.zIndex = 1;
? ? ? ? }
? ? ? ? //調整canvas、pic的層次關系,控制地圖在上面一層
? ? ? ? function ShowMap() {
? ? ? ? ? ? document.getElementById('canvasOne').style.zIndex = 1;
? ? ? ? ? ? document.getElementById('map').style.zIndex = 2;
? ? ? ? }


? ? ? ? //執行按鈕,將要素繪制到地圖的矢量圖層上
? ? ? ? function Work() {
? ? ? ? ? ? //將pixel點數組 轉為 地理坐標組
? ? ? ? ? ? var SuperCoordnates = getSuperMapCoords();
? ? ? ? ? ? var SuperGeometries = getSuperMapGeometries(SuperCoordnates);
? ? ? ? ? ? var linearRings = new SuperMap.Geometry.LinearRing(SuperGeometries);
? ? ? ? ? ? var Polygon = new SuperMap.Geometry.Polygon([linearRings]);
? ? ? ? ? ? var PolygonFeature = new SuperMap.Feature.Vector(Polygon);
? ? ? ? ? ? PolygonFeature.style = FeatureStyle;
? ? ? ? ? ? //添加要素
? ? ? ? ? ? vectorLayer.addFeatures([PolygonFeature]);
? ? ? ? ? ? showResult(SuperCoordnates);
? ? ? ? }


? ? ? ? //由超圖經緯度坐標串生成超圖點對象數組
? ? ? ? function getSuperMapGeometries(s) {
? ? ? ? ? ? var points = [];
? ? ? ? ? ? for (var i = 0; i < Coordinates.length; i++) {
? ? ? ? ? ? ? ? points.push(new SuperMap.Geometry.Point(s[i].lon, s[i].lat));
? ? ? ? ? ? }
? ? ? ? ? ? return points;
? ? ? ? }
? ? ? ? //由屏幕坐標串轉為超圖經緯度坐標串
? ? ? ? function getSuperMapCoords() {
? ? ? ? ? ? var s = [];
? ? ? ? ? ? for (var i = 0; i < Coordinates.length; i++) {
? ? ? ? ? ? ? ? var lonlat = map.getLonLatFromPixel(new SuperMap.Pixel(After_Coordinates[i].X, After_Coordinates[i].Y));
? ? ? ? ? ? ? ? s.push(lonlat);
? ? ? ? ? ? }
? ? ? ? ? ? return s;
? ? ? ? }


? ? ? ? //改變操作狀態
? ? ? ? function ChangeSwitcher(SWCase) {
? ? ? ? ? ? switch (SWCase) {
? ? ? ? ? ? ? ? case 1:
? ? ? ? ? ? ? ? ? ? SwitchCase = 1;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? case 2:
? ? ? ? ? ? ? ? ? ? SwitchCase = 2;
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? ? ? default:
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? Before_Coordinates = copyObject(After_Coordinates);
? ? ? ? }


? ? ? ? //對象深拷貝的一種方法
? ? ? ? function copyObject(source) {
? ? ? ? ? ? var result = {};
? ? ? ? ? ? for (var key in source) {
? ? ? ? ? ? ? ? result[key] = typeof source[key] === 'object' ? copyObject(source[key]) : source[key];
? ? ? ? ? ? }
? ? ? ? ? ? return result;
? ? ? ? }
? ? ? ??
//這一塊都用于測試


? ? ? ? //在平移的時候展示中間參數
? ? ? ? function showCos(dx,dy,MouseP) {
? ? ? ? ? ? var s = "";
? ? ? ? ? ? s += "鼠標位置(pixel):\r\nX:" + MouseP.X + " Y:" + MouseP.Y + "\r\n";
? ? ? ? ? ? s += "拖拽點編號:" + Point_FirstSelect_index + "\r\n";
? ? ? ? ? ? s += "旋轉中心點\r\n:X-" + Point_FirstSelect.X + "Y-" + Point_FirstSelect.Y + "\r\n";
? ? ? ? ? ? s += "平移量: X-"+dx +" Y-"+dy+ "\r\n";
? ? ? ? ? ? document.getElementById("showCoords").value = s;
? ? ? ? }


? ? ? ? //在旋轉的時候展示中間參數
? ? ? ? function showCos2(angle,MouseP) {
? ? ? ? ? ? var s = "";
? ? ? ? ? ? s += "逆時針旋轉角:" + 180/Math.PI*angle + "度\r\n";
? ? ? ? ? ? s += "鼠標位置(pixel)X:" + MouseP.X + " " + "鼠標Y:" + MouseP.Y+"\r\n";
? ? ? ? ? ? s += "旋轉中心點坐標:\r\nX-" + Point_FirstSelect.X + " Y-" + Point_FirstSelect.Y + "\r\n";
? ? ? ? ? ? s += "定位方向點坐標:\r\nX-" + Point_SecondSelect.X + " Y-" + Point_SecondSelect.Y + "\r\n";
? ? ? ? ? ? document.getElementById("showCoords").value = s;
? ? ? ? }


? ? ? ? //測試用的方法
? ? ? ? function getSomeTestInfo() {
? ? ? ? ? ? alert("Canvas的index:" + document.getElementById('Pic').style.zIndex);
? ? ? ? ? ? alert("map的index:" + document.getElementById('map').style.zIndex);
? ? ? ? ? ? displayProp("Pic的Style屬性:" + document.getElementById('Pic').style);
? ? ? ? }


? ? ? ? //獲取js對象所有屬性(這個方法用于測試)
? ? ? ? function displayProp(obj) {
? ? ? ? ? ? var names = "";
? ? ? ? ? ? for (var name in obj) {
? ? ? ? ? ? ? ? names += name + ": " + obj[name] + ", \r\n";
? ? ? ? ? ? }
? ? ? ? ? ? alert(names);
? ? ? ? }


? ? ? ? //使用滑輪直接進入地圖
? ? ? ? function Wheel2Map(e) {
? ? ? ? ? ? document.getElementById('canvasOne').style.zIndex = 1;
? ? ? ? ? ? document.getElementById('map').style.zIndex = 2;
? ? ? ? }


? ? ? ? //判斷緩沖范圍必須為正數
? ? ? ? function valueIsPositive() {
? ? ? ? ? ? if (document.getElementById('BufferRange').value <= 0) {
? ? ? ? ? ? ? ? alert("緩沖范圍請填寫正值");
? ? ? ? ? ? ? ? document.getElementById('BufferRange').value = 10;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? function Reset() {
? ? ? ? ? ? var ctx = canvas.getContext("2d");
? ? ? ? ? ? ctx.clearRect(0, 0, 1000, 1000);
? ? ? ? ? ? vectorLayer.removeAllFeatures();
? ? ? ? ? ? drawJson();
? ? ? ? ? ? SwitchCase = isOpenPan;
? ? ? ? }
? ? </script>
</head>
<body οnlοad="init()" onmousewheel="Wheel2Map(event)";>
? ? ? ? <div id="map"></div>
? ? ? ? <canvas id="canvasOne" width="1000px" height="1000px"></canvas>
? ? ? ? <div id="rightdiv">
? ? ? ? ? ? ? ? <div id="FirstFloorDiv">
? ? ? ? ? ? ? ? ? ? <input type="button" value="顯示建筑" οnclick="ShowCanvas()" />
? ? ? ? ? ? ? ? ? ? <input type="button" value="顯示地圖" οnclick="ShowMap()" />
? ? ? ? ? ? ? ? ? ? &nbsp?
? ? ? ? ? ? ? ? ? ? <input type="button" value="進行平移" οnclick="ChangeSwitcher(1)" />
? ? ? ? ? ? ? ? ? ? <input type="button" value="進行旋轉" οnclick="ChangeSwitcher(2)" />
? ? ? ? ? ? ? ? ? ? &nbsp?
? ? ? ? ? ? ? ? ? ? <input type="button" value="重啟" οnclick="Reset()" />
? ? ? ? ? ? ? ? ? ? </br></br>地圖數據源:
? ? ? ? ? ? ? ? ? ? <select id="DataSource" name="DataSource" autofocus="true">
? ? ? ? ? ? ? ? ? ? ? ? <option value="超圖長春">超圖長春</option>
? ? ? ? ? ? ? ? ? ? ? ? <option value="超圖數據服務">超圖數據服務</option>
? ? ? ? ? ? ? ? ? ? ? ? <option value="WMS服務">WMS服務</option>
? ? ? ? ? ? ? ? ? ? </select>
? ? ? ? ? ? ? ? </div>
? ? ? ? ? ? ? ? <div id="SecondFloorDiv">
? ? ? ? ? ? ? ? ? ? <div id="top_CalibrationDiv">
? ? ? ? ? ? ? ? ? ? ? ? 請在下方輸入框中粘貼Json格式字符串:</br>
? ? ? ? ? ? ? ? ? ? ? ? <textarea id="Jsontxt"></textarea>
? ? ? ? ? ? ? ? ? ? ? ? <input id="Calibration" type="button" style="left:120px" value="配準" οnclick="drawJson()" />
? ? ? ? ? ? ? ? ? ? ? ? <input id="Go" type="button" value="執行" οnclick="Work()" />
? ? ? ? ? ? ? ? ? ? </div>
? ? ? ? ? ? ? ? ? ? <div id="PicBox">
? ? ? ? ? ? ? ? ? ? ? ? 點拾取的緩沖范圍(pixel):<input type="text" id="BufferRange" style="width: 30px" value="10" οnblur="valueIsPositive()"/></br>
? ? ? ? ? ? ? ? ? ? ? ? 地圖坐標:<input type="text" id="Coords_pic" style="width: 98%" />
? ? ? ? ? ? ? ? ? ? ? ? </br>當前參數:</br>
? ? ? ? ? ? ? ? ? ? ? ? ?<textarea id="showCoords" style="height: 320px; width:98%"></textarea>
? ? ? ? ? ? ? ? ? ? ? ? ?</br>輸出結果:</br>
? ? ? ? ? ? ? ? ? ? ? ? ?<textarea id="Result" style="height: 450px; width:98%"></textarea>
? ? ? ? ? ? ? ? ? ? </div>
? ? ? ? ? ? ? ? </div>
? ? ? ? </div>
</body>
</html>


<script type="text/javascript">
? ? //一些瑣碎的處理
? ? //禁用Canvas的右鍵菜單
? ? document.getElementById('canvasOne').oncontextmenu = function () {
? ? ? ? return false;
? ? } ?
</script>

總結

以上是生活随笔為你收集整理的在canvas上进行绘图,实现要素配准的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产原创在线视频 | 干综合网| av超碰在线 | 97色在线观看 | 亚洲三级网| 亚洲精品在线观 | 91丨九色丨国产丨porny精品 | www.夜夜草 | 在线观看av片 | 五月天亚洲婷婷 | 在线免费观看国产精品 | 欧美日一级片 | 欧美aa在线| 一区二区三区四区在线 | 美国av片在线观看 | 久草在线免费新视频 | 久久久影视| 欧美一区二区三区四区夜夜大片 | 国产精品午夜久久 | 亚洲h在线播放在线观看h | 久久久久免费观看 | 亚洲 欧美 精品 | 免费av福利| 久久一久久 | 久草久草在线观看 | 精品国产视频在线观看 | 超碰av免费| av三级在线看 | 国产不卡在线播放 | 中文字幕在线观看视频一区 | 亚洲免费不卡 | 天堂va欧美va亚洲va老司机 | 天天爱天天操天天干 | 99久精品| 一级片视频在线 | 丁香久久激情 | 天堂在线免费视频 | 国产精品毛片一区二区 | 天天干天天干 | 国产 日韩 欧美 自拍 | 久久不卡免费视频 | 韩国精品一区二区三区六区色诱 | 超碰国产在线 | 在线观看91网站 | 亚洲高清网站 | 成年人免费观看在线视频 | 久久精品视频在线观看 | 免费av看片| 久久精品一区二区三区国产主播 | 色视频网页 | 久草精品视频 | 国产精品国产亚洲精品看不卡 | 国产在线一区二区三区播放 | 亚洲天堂精品视频在线观看 | 国产91精品一区二区麻豆亚洲 | 日韩色在线 | 日韩欧美视频一区二区 | 色婷婷午夜 | 婷婷视频在线观看 | 亚洲va欧美va | 久久夜夜爽 | 国产福利91精品一区二区三区 | 一级片免费观看视频 | 麻豆视频91 | 欧美精品一区二区免费 | 99视频这里有精品 | 91在线成人 | 九色porny真实丨国产18 | 国产中文字幕免费 | 美女网站黄在线观看 | 天天爱天天草 | 国产精品一区二区av影院萌芽 | 99国产在线观看 | 一区二区三区在线视频111 | 天天色天天干天天色 | 在线日韩一区 | 亚洲精选视频免费看 | 欧美国产日韩一区二区 | 国产亚洲永久域名 | 中文字幕网站 | 日韩一级黄色av | 男女激情片在线观看 | 国产精品久久久久久久久蜜臀 | zzijzzij亚洲日本少妇熟睡 | 亚洲国产美女久久久久 | 中文字幕国产精品一区二区 | 在线观看免费 | 欧美久久久久 | 中文字幕免费播放 | 99久久精品国 | 久久久久久蜜桃一区二区 | 国产小视频免费在线网址 | 国产精品一区二区白浆 | 亚洲国产中文字幕在线视频综合 | 日韩一二区在线观看 | av九九| 一区二区三区日韩视频在线观看 | 色五月成人 | 亚a在线 | 亚洲不卡123 | 视频三区在线 | 成人av中文字幕在线观看 | 日韩v在线91成人自拍 | 国产精品综合在线观看 | 免费的成人av | 处女av在线 | 色婷婷六月| 在线免费91 | 黄污视频大全 | 成年人免费在线播放 | 久久综合婷婷综合 | 国产免码va在线观看免费 | 中文字幕精品三级久久久 | 人人干人人模 | 欧美综合在线视频 | 在线av资源| 91福利视频久久久久 | 日韩激情免费视频 | 成人免费在线看片 | 91精品日韩 | 国产精品高清一区二区三区 | 91在线免费播放视频 | 丁香婷婷射 | 在线观看精品黄av片免费 | 国产午夜精品免费一区二区三区视频 | 91一区啪爱嗯打偷拍欧美 | 亚洲精品国产品国语在线 | 日韩欧美视频一区二区 | 国产精品午夜在线观看 | 婷婷电影在线观看 | 国产视频综合在线 | 天天激情天天干 | 国产成人精品不卡 | av网在线观看 | 色综合网 | 国产aa精品 | 欧美粗又大| 在线欧美中文字幕 | 色偷偷人人澡久久超碰69 | 亚洲精品国久久99热 | 国产精品一区二区av影院萌芽 | 久久综合久久综合久久 | 99色视频在线 | 亚洲 精品在线视频 | 视频91| 精品在线观看国产 | 超碰在线人人 | 久久网站最新地址 | 九九精品无码 | 天天操天天操天天操天天操 | 久久精品一区二区三区中文字幕 | 97超碰免费在线 | 亚洲欧美综合精品久久成人 | 日韩网站在线免费观看 | 91精品国自产在线观看欧美 | 99久久精品免费看 | 国产在线专区 | 国产精品美女免费 | 免费在线观看污网站 | 九九热视频在线播放 | 婷婷在线综合 | 国产91精品一区二区麻豆网站 | 免费视频区 | 99视频国产精品免费观看 | 人人插人人费 | 婷婷久久一区二区三区 | 亚洲aⅴ在线观看 | 黄色片免费看 | 国产精品第72页 | 日韩在线免费小视频 | 亚洲午夜精品一区 | 欧美日韩国产高清视频 | 99re亚洲国产精品 | 国内外激情视频 | 探花视频免费在线观看 | 久久精品国产免费观看 | 五月婷婷丁香在线观看 | 久久国产精品影片 | 91人人网 | 亚洲91中文字幕无线码三区 | 一本到在线 | 中文字幕第一页在线视频 | 久久精品视频在线观看免费 | 国产综合精品一区二区三区 | 青青河边草免费直播 | 国产精品日韩在线观看 | 久草网视频在线观看 | 欧美va日韩va| 九九九九热精品免费视频点播观看 | 91精品秘密在线观看 | 97超碰国产在线 | 国产一区免费看 | 久久久免费毛片 | 日韩欧美精品一区 | 日韩电影精品一区 | 亚洲一级二级 | 毛片网免费 | 亚洲精品在线播放视频 | 91大神精品视频 | 欧美日本中文字幕 | 欧美一级片免费播放 | 免费观看v片在线观看 | 日日夜夜噜噜噜 | 免费一级日韩欧美性大片 | 夜色.com| 久久国产精品视频观看 | 六月丁香激情综合色啪小说 | 96久久久| 国产精品免费久久久 | 亚洲精选99 | 久久不卡视频 | 天天色天天爱天天射综合 | 91九色蝌蚪在线 | 欧美日韩一区二区久久 | 91九色蝌蚪国产 | 亚洲欧美999| 久久草精品 | 国产成人精品亚洲日本在线观看 | 久草| 激情五月婷婷激情 | 日韩视频1 | 在线日韩中文 | 午夜视频一区二区 | 最近中文字幕视频网 | 亚洲免费精品视频 | 国产精彩在线视频 | 亚洲第一区在线观看 | 中文字幕成人 | 日韩v欧美v日本v亚洲v国产v | 婷婷视频在线播放 | 国产视频69| 国产短视频在线播放 | 久久国产精品99久久人人澡 | 月下香电影 | 久久免费视频网 | 久久国产精品二国产精品中国洋人 | 欧美日韩高清在线观看 | 久久精品国产一区 | 欧美日韩一区二区在线观看 | 日韩久久精品一区二区三区 | 国产美女精品久久久 | 国产精品亚洲片夜色在线 | 久久精品亚洲综合专区 | 在线 国产 亚洲 欧美 | 福利在线看片 | 日韩中文字幕免费在线播放 | 狠狠色综合网站久久久久久久 | 中文在线www | 日韩精品在线免费播放 | 激情一区二区三区欧美 | 有码中文在线 | 一区二区视频电影在线观看 | 欧美激情奇米色 | 亚州激情视频 | 色综合久久久网 | 亚洲成人av一区 | 日日日网 | 中国一级片在线观看 | 精品在线你懂的 | 三上悠亚一区二区在线观看 | 中文字幕av在线播放 | 日本久久久久久久久久 | 欧美午夜激情网 | 成年人免费电影在线观看 | 国产码电影 | 色精品视频 | 久久久久久亚洲精品 | 国产小视频免费在线网址 | www日日| 国产午夜精品一区二区三区嫩草 | 久久香蕉影视 | 日韩小视频网站 | 国产日韩在线观看一区 | 国产成人区 | 亚洲最大激情中文字幕 | 亚洲精品国产精品国产 | 久久久www成人免费精品 | 久久综合免费视频影院 | 500部大龄熟乱视频 欧美日本三级 | 亚洲欧美视频 | 欧美精品xx| 欧美做受xxx | 日韩精品一区电影 | 久久国产乱 | 69国产精品视频免费观看 | 久久96 | 色全色在线资源网 | 久久久久久免费毛片精品 | 草莓视频在线观看免费观看 | 色999五月色 | 射射射综合网 | 97精品在线 | 久久精品人人做人人综合老师 | 欧美综合色 | 久久国产电影 | 2022国产精品视频 | av电影亚洲 | 天天草天天草 | 欧美视频在线观看免费网址 | www.五月天激情 | 婷婷视频 | 开心色婷婷| 天天爽夜夜操 | 国产精品乱码久久久久 | 不卡电影免费在线播放一区 | 91在线视频免费91 | 国产精品美女999 | 首页中文字幕 | 天天天射 | 久草综合在线观看 | 日韩av资源在线观看 | 九九久久久 | 日本三级国产 | 成人免费视频网站 | 97影视| 国产综合香蕉五月婷在线 | 免费又黄又爽的视频 | 欧美日韩免费一区二区 | 国产理论一区二区三区 | 国内精品视频在线播放 | 美女福利视频网 | 一区二区伦理 | 国产精品免费观看视频 | 69国产精品视频免费观看 | 日日操日日操 | 狠狠做深爱婷婷综合一区 | 一级免费看视频 | 丝袜美腿一区 | 久久精精品| 在线免费黄色毛片 | 超碰人人射 | 麻豆一区二区 | 高清av免费一区中文字幕 | 国产黄a三级三级 | 国产黄色高清 | 欧美精品久久久久久久久老牛影院 | 毛片.com | 亚洲欧美va | 国产美女精品在线 | 日日操天天射 | 天天射成人 | 99视频在线观看一区三区 | 在线精品播放 | 在线观看午夜 | 久久婷婷色 | 正在播放亚洲精品 | 日韩黄视频 | 91热精品| 亚洲激情 | 日日夜夜免费精品视频 | 在线观看免费av网站 | 操操综合 | 国产成人a亚洲精品 | 91成人免费电影 | 欧美精品久久久久久久 | www.黄色片.com| 免费色av| 国产精品日韩在线观看 | 人人草在线视频 | 天天操天天射天天添 | 国产亚洲va综合人人澡精品 | 操少妇视频 | 久久精品影视 | 毛片美女网站 | 天天操比 | 97精品欧美91久久久久久 | 丰满少妇一级片 | 亚洲高清激情 | 久久免费美女视频 | 久久久久二区 | 久久欧美在线电影 | 丁香五月亚洲综合在线 | 国产专区在线播放 | 欧美日韩高清在线 | 色婷婷综合在线 | av成人在线观看 | www.com.日本一级 | 免费看国产曰批40分钟 | 日韩电影中文字幕在线观看 | 午夜精品久久久久 | 深爱激情婷婷网 | 福利区在线观看 | 国产成人61精品免费看片 | 国产精品毛片一区二区在线 | 在线看岛国av | 亚洲天天在线日亚洲洲精 | 狠狠色香婷婷久久亚洲精品 | 久久人人爽人人爽人人 | 日韩av男人的天堂 | 手机版av在线 | 久久a热6| 久久久久久久久久久久久久av | 一区二区三区日韩精品 | 欧美亚洲国产一卡 | 在线天堂日本 | 久久美女高清视频 | 久久久亚洲精华液 | 天天干天天射天天爽 | 狠狠的日日 | 成人综合免费 | 日韩一区二区三区观看 | 高潮毛片无遮挡高清免费 | 制服丝袜成人在线 | 国产99精品在线观看 | 国产麻豆剧传媒免费观看 | 曰本三级在线 | 超碰日韩| 国产精品免费在线 | 亚洲免费在线 | 波多野结衣最新 | 亚洲国产三级在线 | 在线视频观看亚洲 | 国产成人三级在线观看 | 色婷婷激情五月 | 成人动漫一区二区三区 | 在线看片一区 | 美女久久久久久久久久 | 8090yy亚洲精品久久 | 成人免费一级片 | 欧美综合色在线图区 | 亚洲区另类春色综合小说 | 在线免费观看视频你懂的 | 激情婷婷网 | 国产又黄又爽又猛视频日本 | 黄色三级网站在线观看 | 日韩理论电影在线 | 久久免费看 | 久久免费视频国产 | 成年人精品| 国产精品久久久久999 | 不卡av在线 | 99在线视频播放 | 在线精品视频免费播放 | 美女视频黄色免费 | 国产无遮挡又黄又爽馒头漫画 | 国产精品丝袜久久久久久久不卡 | 精品一区精品二区 | 天天操天天透 | 国产色女 | 麻豆国产精品视频 | 国产视频一区二区在线 | 狠狠狠狠狠操 | 丰满少妇对白在线偷拍 | 亚洲精品视频二区 | av综合站| 国产黄色片在线免费观看 | 国产专区视频在线观看 | 久久1电影院 | 久久久精品亚洲 | 久久国产二区 | 99精品久久99久久久久 | 久久成人国产 | 日韩av综合网站 | 国产精品69久久久久 | 精品久久片 | 91精品国产91久久久久福利 | 人人爽人人爽人人片av免 | 久草精品视频在线播放 | 久久久亚洲国产精品麻豆综合天堂 | 国产免费小视频 | 国产一在线精品一区在线观看 | 在线视频免费观看 | 色综合色综合久久综合频道88 | 欧美成人xxxxx| 亚洲综合色婷婷 | 久久久亚洲国产精品麻豆综合天堂 | 日韩精品一区二区在线 | 黄色avwww | 亚洲va欧美va | 国产成人一区二区三区免费看 | 免费av影视| 中文字幕日韩有码 | 久久精品99精品国产香蕉 | 国产亚洲在 | 日韩三级免费观看 | 久久视频精品在线观看 | 91av大全| 国产精品 中文在线 | 久久久男人的天堂 | 成年人免费看片 | 亚洲精品国产第一综合99久久 | 国产麻豆精品在线观看 | 久久久久久美女 | 毛片.com| 美女免费视频观看网站 | 在线免费av网 | 鲁一鲁影院 | 国产精品区免费视频 | 91视频 - 88av| 免费在线观看视频一区 | 丁香九月婷婷综合 | 婷婷综合久久 | 九九九在线观看视频 | 在线网址你懂得 | 中文字幕不卡在线88 | 最新日本中文字幕 | 国产精品久久久久久久久久久免费看 | 成人国产精品一区二区 | sesese图片 | 中国一级片在线 | 国产视频在线观看一区二区 | 精品婷婷 | 狠狠色丁香久久婷婷综合丁香 | 欧美一区二区日韩一区二区 | 久久高清 | 97超碰免费 | 中文字幕人成人 | 伊人亚洲综合网 | 六月丁香综合 | 亚洲伊人婷婷 | 日韩欧美高清 | 在线免费观看羞羞视频 | 97人人看 | 91色在线观看 | 超碰97成人| 午夜视频免费播放 | 久久成熟| 久久精品视频网站 | 国产精品成人一区二区三区吃奶 | www.五月天激情 | 一区二区视频在线免费观看 | 天天色天天干天天色 | 国产淫片免费看 | 九九久久精品视频 | 日韩精品一区二区在线观看 | av一级一片 | 一区二区三区高清在线观看 | 国产手机视频在线观看 | 国产主播大尺度精品福利免费 | 国产精品久久久久久久av电影 | 人人爱天天操 | .精品久久久麻豆国产精品 亚洲va欧美 | 色婷婷综合久久久久中文字幕1 | www.干| 成人免费大片黄在线播放 | 国产精品久久久毛片 | 最新99热| 成片视频免费观看 | av大全在线看| 久久99久久99精品免观看粉嫩 | 亚洲精品xxxx| 欧美日韩精品在线观看 | av高清一区二区三区 | 久久国产香蕉视频 | 丁香在线| 亚洲精品麻豆视频 | 综合久久影院 | 麻豆超碰 | av中文天堂在线 | 亚洲小视频在线 | 欧美成人999 | 久草在线高清 | 亚洲国产精彩中文乱码av | 91在线精品观看 | 美女久久久久久 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲国产精品电影 | 天天操天天射天天 | 久久久久久久久久久久99 | 最新日本中文字幕 | 欧美视频99 | 中文字幕色网站 | 伊人成人激情 | 最近中文字幕mv免费高清在线 | 国产成人61精品免费看片 | 最新日韩在线观看视频 | 色婷婷久久久综合中文字幕 | 欧美日本一区 | 久久8精品 | 婷婷网站天天婷婷网站 | 亚洲综合成人在线 | 欧美精品999 | 亚洲一级性 | 成人av免费网站 | 四虎永久精品在线 | 国产成人精品久久久久 | 免费日韩av电影 | 亚洲国产精品久久久久婷婷884 | 天天干天天拍天天操天天拍 | 日韩一区在线免费观看 | 久久九九影院 | 五月天婷婷免费视频 | 中文字幕日韩电影 | 成人av免费在线 | 日日夜夜国产 | 欧美日产在线观看 | 国产污视频在线观看 | 不卡的av | 婷婷视频在线 | 成在人线av | 国产精品女人久久久久久 | 99久久精品免费看国产 | 特级aaa毛片 | 日日天天av| 免费av的网站 | 天天看天天干天天操 | 国产三级视频 | 色综合久久88色综合天天6 | 青青河边草免费视频 | 国产中文a | www.夜夜操.com | 婷婷综合| 日本电影黄色 | 久久久久久久网 | 精品自拍av | 国产成人精品一区二区三区免费 | 在线免费观看黄色 | 国产高清精| 永久中文字幕 | 色偷偷人人澡久久超碰69 | 99一区二区三区 | 天天天综合 | 99精品国产视频 | 国产中文字幕视频在线观看 | 一区二区三区电影在线播 | 亚洲一区网站 | 五月婷久久 | 亚洲欧美婷婷六月色综合 | 久草在线费播放视频 | 午夜视频在线观看欧美 | 国产精久久久久久妇女av | 亚洲精品xxx | 九九视频网 | 视频在线99 | av福利免费| 精品国产乱码久久久久 | 日韩欧美一区二区三区视频 | 午夜精品中文字幕 | 制服丝袜亚洲 | 国产精品一区免费看8c0m | 欧美成人中文字幕 | 在线看片一区 | 日韩欧美精品免费 | 亚洲免费在线视频 | 玖玖在线播放 | 美女国内精品自产拍在线播放 | 97精品国产91久久久久久 | 九九热1 | 国产激情小视频在线观看 | 天天干夜夜擦 | 中文字幕亚洲高清 | 中文字幕免费国产精品 | 婷婷免费在线视频 | 久久久久北条麻妃免费看 | 日韩在线理论 | av九九九| 特级西西www44高清大胆图片 | 在线观看的a站 | 97超碰资源 | 午夜精品一区二区三区免费视频 | 久久毛片高清国产 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 日日夜夜精品免费视频 | 天天天综合 | 国产午夜精品理论片在线 | 精品黄色视| 国产看片 色 | www.色五月.com| 国产精品一区二区吃奶在线观看 | 亚洲视频 视频在线 | 国产免费叼嘿网站免费 | 人人射人人射 | 成人夜晚看av | 夜夜夜影院 | 西西4444www大胆无视频 | 久草精品视频在线播放 | 久久久国产毛片 | 亚洲精品1区2区3区 超碰成人网 | 国产精品青青 | 亚洲激情婷婷 | 久久久国产精品视频 | 91香蕉视频污在线 | 亚洲一区视频免费观看 | 亚洲一级性 | 欧美日本高清视频 | 成人av免费 | 亚洲 中文 欧美 日韩vr 在线 | 美女网站视频一区 | 久久99亚洲精品久久 | 久久在线精品视频 | 日韩久久视频 | 人人爽久久涩噜噜噜网站 | 999久久久国产精品 高清av免费观看 | 成年人在线观看免费视频 | 亚洲一二三久久 | 一区二区三区高清在线 | 一区二区久久 | 激情导航 | 午夜123 | 国产一级精品在线观看 | 亚洲一区精品二人人爽久久 | 久久图| 久久免费视频99 | 欧美日韩一区二区三区免费视频 | 日韩精品中文字幕一区二区 | 婷婷在线播放 | 国产精品观看视频 | 天天操天天干天天爽 | 亚洲欧美精品一区 | a午夜电影 | 亚洲精品视频免费观看 | 久久精品九色 | 精品国产诱惑 | 6080yy精品一区二区三区 | 日韩极品在线 | 色亚洲网 | 97超碰人人干 | 在线观看www视频 | 国产精品久久久久久久久久妇女 | 91精品视频一区二区三区 | 美女久久 | 国产亚洲精品久久久久秋 | 精品国产1区二区 | 亚洲精品视频www | 午夜12点 | 激情伊人五月天 | 中文字幕免费久久 | 色综合久久五月 | 91爱爱免费观看 | 三级黄色在线观看 | 99热精品久久| avhd高清在线谜片 | h视频在线看| 亚洲精品三级 | 精品久久久久久久久久久久 | 精品国产乱子伦一区二区 | www.天天干.com | 久黄色 | 中文字幕在线观看网站 | 国产精品久久久久久高潮 | 国产一级视频在线免费观看 | 麻花天美星空视频 | 久草国产视频 | 97精品超碰一区二区三区 | 国产精品毛片久久久久久 | 成人va视频| 久久男女视频 | 欧美一区二区三区激情视频 | 国产精品毛片一区视频播 | 一区av在线播放 | 午夜精品一区二区三区在线 | 成全免费观看视频 | 国产精品999久久久 久产久精国产品 | 色婷婷88av视频一二三区 | 国产美女精品久久久 | 久久午夜影视 | 在线看v片 | 日韩一区二区三区在线观看 | 国产69精品久久久久9999apgf | 三级视频片 | 天天插天天爽 | 国产成人一区二区啪在线观看 | 欧美性生交大片免网 | 96看片 | 麻豆视频网址 | 天天干人人干 | 国内视频1区| 91亚瑟视频 | 不卡视频一区二区三区 | 欧美最猛性xxxx | 日韩丝袜视频 | 亚洲一区二区三区在线看 | 黄色大片免费网站 | 婷婷综合网| 国产日韩精品在线观看 | 国产网红在线观看 | 最新中文字幕在线观看视频 | 福利一区在线 | 香蕉视频国产在线 | 探花视频免费观看 | 狠狠的干 | 亚洲欧洲成人精品av97 | 国产精品一区二区久久久 | 丝袜一区在线 | 69国产成人综合久久精品欧美 | 午夜 久久 tv | 香蕉影院在线 | 999国内精品永久免费视频 | 欧美乱淫视频 | 美女免费视频黄 | 国产一线天在线观看 | 成人av在线亚洲 | 日韩精品一区二区在线 | 国产精品自产拍在线观看桃花 | 看国产黄色大片 | 国产精品成人国产乱一区 | 99视频这里只有 | 天堂av免费观看 | 在线小视频你懂的 | 国产中文字幕一区 | 欧美成人手机版 | 久久精品一区二区三区视频 | 亚洲爱爱视频 | 欧美日韩视频在线 | 8090yy亚洲精品久久 | 国产一区二区三区在线免费观看 | 人人cao| 精品久久久久久电影 | 91免费看片黄 | 亚洲自拍自偷 | 成人在线视 | 国产男女免费完整视频 | 最新日韩视频在线观看 | 久久免费视频5 | 欧美日本高清视频 | 欧美大片aaa| 欧美射射射 | 最近中文国产在线视频 | 久久国产综合视频 | 五月天丁香综合 | 97在线视频免费播放 | 香蕉网址| 国产亚洲精品久久久久久无几年桃 | 在线黄色国产电影 | 九七视频在线 | 91视频3p| 在线观看视频精品 | 91亚洲在线观看 | 国产精品成人一区 | 成年人视频在线免费 | 欧美夫妻生活视频 | 日日夜夜天天干 | 国产一区私人高清影院 | 一区二区三区韩国免费中文网站 | 91成人免费看片 | 国产成人精品一区二区三区在线 | 在线视频成人 | 日韩精品视频免费看 | 九九国产精品视频 | 国产99久久 | 五月婷婷色 | 欧美视频二区 | av三级av | 亚洲国产精品女人久久久 | 久久成人免费电影 | 97精品电影院 | 亚洲一二视频 | 最新国产精品久久精品 | 99精品免费久久久久久久久日本 | 久久亚洲免费视频 | 精品福利片 | 日本二区三区在线 | 免费在线观看中文字幕 | 久久久国产精品网站 | 人成在线免费视频 | 狠狠色香婷婷久久亚洲精品 | 欧美日韩不卡在线观看 | 成年人在线免费看 | 欧美精品在线一区二区 | 欧美激情奇米色 | 亚洲精品乱码久久久久久蜜桃欧美 | 天天干天天做天天操 | 91经典在线 | 在线国产片 | 成 人 黄 色 视频播放1 | 精品国产乱码久久久久久1区二区 | 欧美老女人xx | 亚洲精品乱码久久久久v最新版 | 国产99爱 | 午夜精品av | 伊人五月 | 成人免费 在线播放 | 欧美日韩视频在线 | 国产一区二区在线视频观看 | 99久久婷婷国产综合精品 | 免费看一及片 | 久草免费色站 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 精品国产1区2区 | 色综合久久88色综合天天人守婷 | 色视频在线免费观看 | 婷婷丁香色 | 亚洲成人免费 | 成人污视频在线观看 | 日本丶国产丶欧美色综合 | 日韩理论电影网 | 日本h在线播放 | 黄色av高清 | 日韩在线观看av | av免费试看| 国产又粗又长又硬免费视频 | 免费观看一级视频 | 欧美在线视频a | 91亚洲成人 | 久久久精品在线观看 | 99精彩视频在线观看免费 | 顶级bbw搡bbbb搡bbbb | 日韩大片在线免费观看 | 最近日本韩国中文字幕 | 色婷婷88av视频一二三区 | 免费黄色a级毛片 | 午夜在线观看一区 | 色综合久久88 | 免费成人在线视频网站 | 日韩xxxbbb| 缴情综合网五月天 | 午夜骚影 | 免费观看国产视频 | 99这里只有精品视频 | 色综合五月天 | 香蕉视频在线免费 | 激情网综合 | 成人av午夜 | 四虎伊人 | 摸bbb搡bbb搡bbbb| 亚洲国产黄色片 | 91成人在线观看喷潮 | 久久精品2 | 亚洲爱爱视频 | 日韩羞羞| 亚洲激情 欧美激情 | 天天操夜夜逼 | 久久av一区二区三区亚洲 | 99免费视频 | 91亚洲欧美 | 精品久久久久亚洲 | 日韩免费一二三区 | 天天做天天爱天天爽综合网 | 国产精品99久久99久久久二8 | 天天摸天天操天天爽 | 日本最新一区二区三区 | 国产欧美综合在线观看 | 久久亚洲综合国产精品99麻豆的功能介绍 | 中国黄色一级大片 | 亚洲黄色免费网站 | 不卡av电影在线观看 | 播五月综合| 一二三区av | 私人av| 国产一区在线免费观看 | 黄色综合 | 精品一区 在线 | 欧美一级黄色片 | 天天操天天弄 | 亚洲精品2区 | 99热最新网址 | 婷婷色 亚洲 | 久久久麻豆 | 国产精品一区二区久久精品爱微奶 | 亚洲一区二区黄色 | 亚洲激情一区二区三区 | 日韩高清成人 | 丁香激情视频 | 久久国产欧美日韩 | 全久久久久久久久久久电影 | avcom在线 | 日日夜夜婷婷 | 特级西西www44高清大胆图片 | 蜜臀久久99精品久久久无需会员 | 亚洲网站在线 | 日韩精品久久久久久久电影99爱 | 天天亚洲| 亚洲婷婷伊人 | 欧美一二三视频 | 九九99 | 中文字幕高清 | 亚洲伦理一区二区 | 一级做a视频 | 视频91| 欧美日比视频 | 免费合欢视频成人app | 欧美午夜理伦三级在线观看 | 国产一区二区在线看 | 日韩网站在线观看 | 久久免费视频在线 | 亚洲成a人片77777kkkk1在线观看 | 黄色片网站大全 | 中文字幕在线字幕中文 | 国产精品国产毛片 | 91在线视频免费91 | av在线免费不卡 | 91精品婷婷国产综合久久蝌蚪 | 中文在线最新版天堂 | 中文字幕在线不卡国产视频 | 国产区在线 | 久久综合毛片 | 亚洲精品视频在线观看免费视频 | 97视频资源 | 精品一区二区三区香蕉蜜桃 | 91电影福利 | 国产视频资源在线观看 | 黄色av三级在线 | 国产手机视频在线播放 | 亚洲综合激情网 | 日韩一级成人av | 99在线精品免费视频九九视 | 成人黄色在线观看视频 | 欧美黄色高清 | 国产97在线观看 | 在线成人短视频 | 中文字幕中文字幕在线中文字幕三区 | av亚洲产国偷v产偷v自拍小说 | 国产一区二区精品 | 成人影片在线播放 | 亚洲成人精品影院 | 天天艹天天操 | 五月婷香蕉久色在线看 | 日韩高清一区 |