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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

鼠标绘制工具加是否超出范围判断

發布時間:2024/1/8 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 鼠标绘制工具加是否超出范围判断 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

初始化鼠標繪制工具的代碼:

//實例化鼠標繪制工具_this.drawingManager = new BMapLib.DrawingManager(_this.addMap, {isOpen: true, //是否開啟繪制模式enableDrawingTool: false, //是否顯示工具欄drawingToolOptions: {anchor: BMAP_ANCHOR_TOP_RIGHT, //位置offset: new BMap.Size(5, 5), //偏離值drawingModes: [BMAP_DRAWING_POLYGON]},polygonOptions: _this.styleOptions, //多邊形的樣式//----------------主要是這里哦----------------outRange:false,//是否超出范圍hasLabel:false//是否顯示label});

然后先添加一個多邊形,鼠標繪制不可以離開多邊形:

var ply = new BMap.Polygon(points, { strokeWeight: 2, strokeColor: red, fillOpacity: 0.4}); //建立多邊形覆蓋物 .addEventListener("mouseover", this.mouseover); ply.addEventListener("mouseout", this.mouseout); this.addMap.addOverlay(ply);

下面是鼠標移入移出事件:

//子網格鼠標移入事件,如果正在繪制,并且繪制模式為選中狀態mouseover(evt) {if(this.drawingManager._isOpen&&this.drawingManager.getDrawingMode()!='marker'){if(!this.drawingManager._outRange){ this.drawingManager.outRangeAction();}}}, mouseout(evt) {if(this.drawingManager._isOpen && this.drawingManager.getDrawingMode()!='marker'){if(this.drawingManager._outRange){ this.drawingManager.inRangeAction();}}}

DrawingManager.js源代碼:搜索outRange可直接查看我加的一些代碼

/*** @fileoverview 百度地圖的鼠標繪制工具,對外開放。* 允許用戶在地圖上點擊完成鼠標繪制的功能。* 使用者可以自定義所繪制結果的相關樣式,例如線寬、顏色、測線段距離、面積等等。* 主入口類是<a href="symbols/BMapLib.DrawingManager.html">DrawingManager</a>,* 基于Baidu Map API 1.4。** @author Baidu Map Api Group * @version 1.4*//** * @namespace BMap的所有library類均放在BMapLib命名空間下*/var BMapLib = window.BMapLib = BMapLib || {};/*** 定義常量, 繪制的模式* @final {Number} DrawingType*/var BMAP_DRAWING_MARKER = "marker", // 鼠標畫點模式BMAP_DRAWING_POLYLINE = "polyline", // 鼠標畫線模式BMAP_DRAWING_CIRCLE = "circle", // 鼠標畫圓模式BMAP_DRAWING_RECTANGLE = "rectangle", // 鼠標畫矩形模式BMAP_DRAWING_POLYGON = "polygon"; // 鼠標畫多邊形模式(function() {/*** 聲明baidu包*/var baidu = baidu || {guid : "$BAIDU$"};(function() {// 一些頁面級別唯一的屬性,需要掛載在window[baidu.guid]上window[baidu.guid] = {};/*** 將源對象的所有屬性拷貝到目標對象中* @name baidu.extend* @function* @grammar baidu.extend(target, source)* @param {Object} target 目標對象* @param {Object} source 源對象* @returns {Object} 目標對象*/baidu.extend = function (target, source) {for (var p in source) {if (source.hasOwnProperty(p)) {target[p] = source[p];}} return target;};/*** @ignore* @namespace* @baidu.lang 對語言層面的封裝,包括類型判斷、模塊擴展、繼承基類以及對象自定義事件的支持。* @property guid 對象的唯一標識*/baidu.lang = baidu.lang || {};/*** 返回一個當前頁面的唯一標識字符串。* @function* @grammar baidu.lang.guid()* @returns {String} 當前頁面的唯一標識字符串*/baidu.lang.guid = function() {return "TANGRAM__" + (window[baidu.guid]._counter ++).toString(36);};window[baidu.guid]._counter = window[baidu.guid]._counter || 1;/*** 所有類的實例的容器* key為每個實例的guid*/window[baidu.guid]._instances = window[baidu.guid]._instances || {};/*** Tangram繼承機制提供的一個基類,用戶可以通過繼承baidu.lang.Class來獲取它的屬性及方法。* @function* @name baidu.lang.Class* @grammar baidu.lang.Class(guid)* @param {string} guid 對象的唯一標識* @meta standard* @remark baidu.lang.Class和它的子類的實例均包含一個全局唯一的標識guid。* guid是在構造函數中生成的,因此,繼承自baidu.lang.Class的類應該直接或者間接調用它的構造函數。<br>* baidu.lang.Class的構造函數中產生guid的方式可以保證guid的唯一性,及每個實例都有一個全局唯一的guid。*/baidu.lang.Class = function(guid) {this.guid = guid || baidu.lang.guid();window[baidu.guid]._instances[this.guid] = this;};window[baidu.guid]._instances = window[baidu.guid]._instances || {};/*** 判斷目標參數是否string類型或String對象* @name baidu.lang.isString* @function* @grammar baidu.lang.isString(source)* @param {Any} source 目標參數* @shortcut isString* @meta standard* * @returns {boolean} 類型判斷結果*/baidu.lang.isString = function (source) {return '[object String]' == Object.prototype.toString.call(source);};/*** 判斷目標參數是否為function或Function實例* @name baidu.lang.isFunction* @function* @grammar baidu.lang.isFunction(source)* @param {Any} source 目標參數* @returns {boolean} 類型判斷結果*/baidu.lang.isFunction = function (source) {return '[object Function]' == Object.prototype.toString.call(source);};/*** 重載了默認的toString方法,使得返回信息更加準確一些。* @return {string} 對象的String表示形式*/baidu.lang.Class.prototype.toString = function(){return "[object " + (this._className || "Object" ) + "]";};/*** 釋放對象所持有的資源,主要是自定義事件。* @name dispose* @grammar obj.dispose()*/baidu.lang.Class.prototype.dispose = function(){delete window[baidu.guid]._instances[this.guid];for(var property in this){if (!baidu.lang.isFunction(this[property])) {delete this[property];}}this.disposed = true;};/*** 自定義的事件對象。* @function* @name baidu.lang.Event* @grammar baidu.lang.Event(type[, target])* @param {string} type 事件類型名稱。為了方便區分事件和一個普通的方法,事件類型名稱必須以"on"(小寫)開頭。* @param {Object} [target]觸發事件的對象* @meta standard* @remark 引入該模塊,會自動為Class引入3個事件擴展方法:addEventListener、removeEventListener和dispatchEvent。* @see baidu.lang.Class*/baidu.lang.Event = function (type, target) {this.type = type;this.returnValue = true;this.target = target || null;this.currentTarget = null;};/*** 注冊對象的事件監聽器。引入baidu.lang.Event后,Class的子類實例才會獲得該方法。* @grammar obj.addEventListener(type, handler[, key])* @param {string} type 自定義事件的名稱* @param {Function} handler 自定義事件被觸發時應該調用的回調函數* @param {string} [key] 為事件監聽函數指定的名稱,可在移除時使用。如果不提供,方法會默認為它生成一個全局唯一的key。* @remark 事件類型區分大小寫。如果自定義事件名稱不是以小寫"on"開頭,該方法會給它加上"on"再進行判斷,即"click"和"onclick"會被認為是同一種事件。 */baidu.lang.Class.prototype.addEventListener = function (type, handler, key) {if (!baidu.lang.isFunction(handler)) {return;}!this.__listeners && (this.__listeners = {});var t = this.__listeners, id;if (typeof key == "string" && key) {if (/[^\w\-]/.test(key)) {throw("nonstandard key:" + key);} else {handler.hashCode = key; id = key;}}type.indexOf("on") != 0 && (type = "on" + type);typeof t[type] != "object" && (t[type] = {});id = id || baidu.lang.guid();handler.hashCode = id;t[type][id] = handler;};/*** 移除對象的事件監聽器。引入baidu.lang.Event后,Class的子類實例才會獲得該方法。* @grammar obj.removeEventListener(type, handler)* @param {string} type 事件類型* @param {Function|string} handler 要移除的事件監聽函數或者監聽函數的key* @remark 如果第二個參數handler沒有被綁定到對應的自定義事件中,什么也不做。*/baidu.lang.Class.prototype.removeEventListener = function (type, handler) {if (baidu.lang.isFunction(handler)) {handler = handler.hashCode;} else if (!baidu.lang.isString(handler)) {return;}!this.__listeners && (this.__listeners = {});type.indexOf("on") != 0 && (type = "on" + type);var t = this.__listeners;if (!t[type]) {return;}t[type][handler] && delete t[type][handler];};/*** 派發自定義事件,使得綁定到自定義事件上面的函數都會被執行。引入baidu.lang.Event后,Class的子類實例才會獲得該方法。* @grammar obj.dispatchEvent(event, options)* @param {baidu.lang.Event|String} event Event對象,或事件名稱(1.1.1起支持)* @param {Object} options 擴展參數,所含屬性鍵值會擴展到Event對象上(1.2起支持)* @remark 處理會調用通過addEventListenr綁定的自定義事件回調函數之外,還會調用直接綁定到對象上面的自定義事件。* 例如:<br>* myobj.onMyEvent = function(){}<br>* myobj.addEventListener("onMyEvent", function(){});*/baidu.lang.Class.prototype.dispatchEvent = function (event, options) {if (baidu.lang.isString(event)) {event = new baidu.lang.Event(event);}!this.__listeners && (this.__listeners = {});options = options || {};for (var i in options) {event[i] = options[i];}var i, t = this.__listeners, p = event.type;event.target = event.target || this;event.currentTarget = this;p.indexOf("on") != 0 && (p = "on" + p);baidu.lang.isFunction(this[p]) && this[p].apply(this, arguments);if (typeof t[p] == "object") {for (i in t[p]) {t[p][i].apply(this, arguments);}}return event.returnValue;};/*** 為類型構造器建立繼承關系* @name baidu.lang.inherits* @function* @grammar baidu.lang.inherits(subClass, superClass[, className])* @param {Function} subClass 子類構造器* @param {Function} superClass 父類構造器* @param {string} className 類名標識* @remark 使subClass繼承superClass的prototype,* 因此subClass的實例能夠使用superClass的prototype中定義的所有屬性和方法。<br>* 這個函數實際上是建立了subClass和superClass的原型鏈集成,并對subClass進行了constructor修正。<br>* <strong>注意:如果要繼承構造函數,需要在subClass里面call一下,具體見下面的demo例子</strong>* @shortcut inherits* @meta standard* @see baidu.lang.Class*/baidu.lang.inherits = function (subClass, superClass, className) {var key, proto, selfProps = subClass.prototype, clazz = new Function(); clazz.prototype = superClass.prototype;proto = subClass.prototype = new clazz();for (key in selfProps) {proto[key] = selfProps[key];}subClass.prototype.constructor = subClass;subClass.superClass = superClass.prototype;if ("string" == typeof className) {proto._className = className;}};/*** @ignore* @namespace baidu.dom 操作dom的方法。*/baidu.dom = baidu.dom || {};/*** 從文檔中獲取指定的DOM元素* * @param {string|HTMLElement} id 元素的id或DOM元素* @meta standard* @return {HTMLElement} DOM元素,如果不存在,返回null,如果參數不合法,直接返回參數*/baidu._g = baidu.dom._g = function (id) {if (baidu.lang.isString(id)) {return document.getElementById(id);}return id;};/*** 從文檔中獲取指定的DOM元素* @name baidu.dom.g* @function* @grammar baidu.dom.g(id)* @param {string|HTMLElement} id 元素的id或DOM元素* @meta standard* * @returns {HTMLElement|null} 獲取的元素,查找不到時返回null,如果參數不合法,直接返回參數*/baidu.g = baidu.dom.g = function (id) {if ('string' == typeof id || id instanceof String) {return document.getElementById(id);} else if (id && id.nodeName && (id.nodeType == 1 || id.nodeType == 9)) {return id;}return null;};/*** 在目標元素的指定位置插入HTML代碼* @name baidu.dom.insertHTML* @function* @grammar baidu.dom.insertHTML(element, position, html)* @param {HTMLElement|string} element 目標元素或目標元素的id* @param {string} position 插入html的位置信息,取值為beforeBegin,afterBegin,beforeEnd,afterEnd* @param {string} html 要插入的html* @remark* * 對于position參數,大小寫不敏感<br>* 參數的意思:beforeBegin<span>afterBegin this is span! beforeEnd</span> afterEnd <br />* 此外,如果使用本函數插入帶有script標簽的HTML字符串,script標簽對應的腳本將不會被執行。* * @shortcut insertHTML* @meta standard* * @returns {HTMLElement} 目標元素*/baidu.insertHTML = baidu.dom.insertHTML = function (element, position, html) {element = baidu.dom.g(element);var range,begin;if (element.insertAdjacentHTML) {element.insertAdjacentHTML(position, html);} else {// 這里不做"undefined" != typeof(HTMLElement) && !window.opera判斷,其它瀏覽器將出錯?!// 但是其實做了判斷,其它瀏覽器下等于這個函數就不能執行了range = element.ownerDocument.createRange();// FF下range的位置設置錯誤可能導致創建出來的fragment在插入dom樹之后html結構亂掉// 改用range.insertNode來插入html, by wenyuxiang @ 2010-12-14.position = position.toUpperCase();if (position == 'AFTERBEGIN' || position == 'BEFOREEND') {range.selectNodeContents(element);range.collapse(position == 'AFTERBEGIN');} else {begin = position == 'BEFOREBEGIN';range[begin ? 'setStartBefore' : 'setEndAfter'](element);range.collapse(begin);}range.insertNode(range.createContextualFragment(html));}return element;};/*** 為目標元素添加className* @name baidu.dom.addClass* @function* @grammar baidu.dom.addClass(element, className)* @param {HTMLElement|string} element 目標元素或目標元素的id* @param {string} className 要添加的className,允許同時添加多個class,中間使用空白符分隔* @remark* 使用者應保證提供的className合法性,不應包含不合法字符,className合法字符參考:http://www.w3.org/TR/CSS2/syndata.html。* @shortcut addClass* @meta standard* * @returns {HTMLElement} 目標元素*/baidu.ac = baidu.dom.addClass = function (element, className) {element = baidu.dom.g(element);var classArray = className.split(/\s+/),result = element.className,classMatch = " " + result + " ",i = 0,l = classArray.length;for (; i < l; i++){if ( classMatch.indexOf( " " + classArray[i] + " " ) < 0 ) {result += (result ? ' ' : '') + classArray[i];}}element.className = result;return element;};/*** @ignore* @namespace baidu.event 屏蔽瀏覽器差異性的事件封裝。* @property target 事件的觸發元素* @property pageX 鼠標事件的鼠標x坐標* @property pageY 鼠標事件的鼠標y坐標* @property keyCode 鍵盤事件的鍵值*/baidu.event = baidu.event || {};/*** 事件監聽器的存儲表* @private* @meta standard*/baidu.event._listeners = baidu.event._listeners || [];/*** 為目標元素添加事件監聽器* @name baidu.event.on* @function* @grammar baidu.event.on(element, type, listener)* @param {HTMLElement|string|window} element 目標元素或目標元素id* @param {string} type 事件類型* @param {Function} listener 需要添加的監聽器* @remark* 1. 不支持跨瀏覽器的鼠標滾輪事件監聽器添加<br>* 2. 改方法不為監聽器灌入事件對象,以防止跨iframe事件掛載的事件對象獲取失敗 * @shortcut on* @meta standard* @see baidu.event.un* * @returns {HTMLElement|window} 目標元素*/baidu.on = baidu.event.on = function (element, type, listener) {type = type.replace(/^on/i, '');element = baidu._g(element);var realListener = function (ev) {// 1. 這里不支持EventArgument, 原因是跨frame的事件掛載// 2. element是為了修正thislistener.call(element, ev);},lis = baidu.event._listeners,filter = baidu.event._eventFilter,afterFilter,realType = type;type = type.toLowerCase();// filter過濾if(filter && filter[type]){afterFilter = filter[type](element, type, realListener);realType = afterFilter.type;realListener = afterFilter.listener;}// 事件監聽器掛載if (element.addEventListener) {element.addEventListener(realType, realListener, false);} else if (element.attachEvent) {element.attachEvent('on' + realType, realListener);}// 將監聽器存儲到數組中lis[lis.length] = [element, type, listener, realListener, realType];return element;};/*** 為目標元素移除事件監聽器* @name baidu.event.un* @function* @grammar baidu.event.un(element, type, listener)* @param {HTMLElement|string|window} element 目標元素或目標元素id* @param {string} type 事件類型* @param {Function} listener 需要移除的監聽器* @shortcut un* @meta standard* * @returns {HTMLElement|window} 目標元素*/baidu.un = baidu.event.un = function (element, type, listener) {element = baidu._g(element);type = type.replace(/^on/i, '').toLowerCase();var lis = baidu.event._listeners, len = lis.length,isRemoveAll = !listener,item,realType, realListener;//如果將listener的結構改成json//可以節省掉這個循環,優化性能//但是由于un的使用頻率并不高,同時在listener不多的時候//遍歷數組的性能消耗不會對代碼產生影響//暫不考慮此優化while (len--) {item = lis[len];// listener存在時,移除element的所有以listener監聽的type類型事件// listener不存在時,移除element的所有type類型事件if (item[1] === type&& item[0] === element&& (isRemoveAll || item[2] === listener)) {realType = item[4];realListener = item[3];if (element.removeEventListener) {element.removeEventListener(realType, realListener, false);} else if (element.detachEvent) {element.detachEvent('on' + realType, realListener);}lis.splice(len, 1);}} return element;};/*** 獲取event事件,解決不同瀏覽器兼容問題* @param {Event}* @return {Event}*/baidu.getEvent = baidu.event.getEvent = function (event) {return window.event || event;}/*** 獲取event.target,解決不同瀏覽器兼容問題* @param {Event}* @return {Target}*/baidu.getTarget = baidu.event.getTarget = function (event) {var event = baidu.getEvent(event);return event.target || event.srcElement;}/*** 阻止事件的默認行為* @name baidu.event.preventDefault* @function* @grammar baidu.event.preventDefault(event)* @param {Event} event 事件對象* @meta standard*/baidu.preventDefault = baidu.event.preventDefault = function (event) {var event = baidu.getEvent(event);if (event.preventDefault) {event.preventDefault();} else {event.returnValue = false;}};/*** 停止事件冒泡傳播* @param {Event}*/baidu.stopBubble = baidu.event.stopBubble = function (event) {event = baidu.getEvent(event);event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true;}})();/** * @exports DrawingManager as BMapLib.DrawingManager */var DrawingManager =/*** DrawingManager類的構造函數* @class 鼠標繪制管理類,實現鼠標繪制管理的<b>入口</b>。* 實例化該類后,即可調用該類提供的open* 方法開啟繪制模式狀態。* 也可加入工具欄進行選擇操作。* * @constructor* @param {Map} map Baidu map的實例對象* @param {Json Object} opts 可選的輸入參數,非必填項。可輸入選項包括:<br />* {"<b>isOpen</b>" : {Boolean} 是否開啟繪制模式* <br />"<b>enableDrawingTool</b>" : {Boolean} 是否添加繪制工具欄控件,默認不添加* <br />"<b>drawingToolOptions</b>" : {Json Object} 可選的輸入參數,非必填項。可輸入選項包括* <br /> "<b>anchor</b>" : {ControlAnchor} 停靠位置、默認左上角* <br /> "<b>offset</b>" : {Size} 偏移值。* <br /> "<b>scale</b>" : {Number} 工具欄的縮放比例,默認為1* <br /> "<b>drawingModes</b>" : {DrawingType<Array>} 工具欄上可以選擇出現的繪制模式,將需要顯示的DrawingType以數組型形式傳入,如[BMAP_DRAWING_MARKER, BMAP_DRAWING_CIRCLE] 將只顯示畫點和畫圓的選項* <br />"<b>enableCalculate</b>" : {Boolean} 繪制是否進行測距(畫線時候)、測面(畫圓、多邊形、矩形)* <br />"<b>markerOptions</b>" : {CircleOptions} 所畫的點的可選參數,參考api中的<a href="http://developer.baidu.com/map/reference/index.php?title=Class:%E6%80%BB%E7%B1%BB/%E8%A6%86%E7%9B%96%E7%89%A9%E7%B1%BB">對應類</a>* <br />"<b>circleOptions</b>" : {CircleOptions} 所畫的圓的可選參數,參考api中的<a href="http://developer.baidu.com/map/reference/index.php?title=Class:%E6%80%BB%E7%B1%BB/%E8%A6%86%E7%9B%96%E7%89%A9%E7%B1%BB">對應類</a>* <br />"<b>polylineOptions</b>" : {CircleOptions} 所畫的線的可選參數,參考api中的<a href="http://developer.baidu.com/map/reference/index.php?title=Class:%E6%80%BB%E7%B1%BB/%E8%A6%86%E7%9B%96%E7%89%A9%E7%B1%BB">對應類</a>* <br />"<b>polygonOptions</b>" : {PolygonOptions} 所畫的多邊形的可選參數,參考api中的<a href="http://developer.baidu.com/map/reference/index.php?title=Class:%E6%80%BB%E7%B1%BB/%E8%A6%86%E7%9B%96%E7%89%A9%E7%B1%BB">對應類</a>* <br />"<b>rectangleOptions</b>" : {PolygonOptions} 所畫的矩形的可選參數,參考api中的<a href="http://developer.baidu.com/map/reference/index.php?title=Class:%E6%80%BB%E7%B1%BB/%E8%A6%86%E7%9B%96%E7%89%A9%E7%B1%BB">對應類</a>** @example <b>參考示例:</b><br />* var map = new BMap.Map("container");<br />map.centerAndZoom(new BMap.Point(116.404, 39.915), 15);<br />* var myDrawingManagerObject = new BMapLib.DrawingManager(map, {isOpen: true, * drawingType: BMAP_DRAWING_MARKER, enableDrawingTool: true,* enableCalculate: false,* drawingToolOptions: {* anchor: BMAP_ANCHOR_TOP_LEFT,* offset: new BMap.Size(5, 5),* drawingTypes : [* BMAP_DRAWING_MARKER,* BMAP_DRAWING_CIRCLE,* BMAP_DRAWING_POLYLINE,* BMAP_DRAWING_POLYGON,* BMAP_DRAWING_RECTANGLE * ]* },* polylineOptions: {* strokeColor: "#333"* });*/BMapLib.DrawingManager = function(map, opts){if (!map) {return;}instances.push(this);opts = opts || {};this._initialize(map, opts);}// 通過baidu.lang下的inherits方法,讓DrawingManager繼承baidu.lang.Classbaidu.lang.inherits(DrawingManager, baidu.lang.Class, "DrawingManager");/*** 開啟地圖的繪制模式** @example <b>參考示例:</b><br />* myDrawingManagerObject.open();*/DrawingManager.prototype.open = function() {// 判斷繪制狀態是否已經開啟if (this._isOpen == true){return true;}closeInstanceExcept(this);this._open();}/*** 關閉地圖的繪制狀態** @example <b>參考示例:</b><br />* myDrawingManagerObject.close();*/DrawingManager.prototype.close = function() {// 判斷繪制狀態是否已經開啟if (this._isOpen == false){return true;}this._close();}DrawingManager.prototype.outRangeAction=function(){this._outRangeAction();}DrawingManager.prototype.inRangeAction=function(){this._inRangeAction();}/*** 設置當前的繪制模式,參數DrawingType,為5個可選常量:* <br/>BMAP_DRAWING_MARKER 畫點* <br/>BMAP_DRAWING_CIRCLE 畫圓* <br/>BMAP_DRAWING_POLYLINE 畫線* <br/>BMAP_DRAWING_POLYGON 畫多邊形* <br/>BMAP_DRAWING_RECTANGLE 畫矩形* @param {DrawingType} DrawingType* @return {Boolean} ** @example <b>參考示例:</b><br />* myDrawingManagerObject.setDrawingMode(BMAP_DRAWING_POLYLINE);*/DrawingManager.prototype.setDrawingMode = function(drawingType) {//與當前模式不一樣時候才進行重新綁定事件if (this._drawingType != drawingType) {closeInstanceExcept(this);this._setDrawingMode(drawingType);}}/*** 獲取當前的繪制模式* @return {DrawingType} 繪制的模式** @example <b>參考示例:</b><br />* alert(myDrawingManagerObject.getDrawingMode());*/DrawingManager.prototype.getDrawingMode = function() {return this._drawingType;}/*** 打開距離或面積計算** @example <b>參考示例:</b><br />* myDrawingManagerObject.enableCalculate();*/DrawingManager.prototype.enableCalculate = function() {this._enableCalculate = true;this._addGeoUtilsLibrary();}/*** 關閉距離或面積計算** @example <b>參考示例:</b><br />* myDrawingManagerObject.disableCalculate();*/DrawingManager.prototype.disableCalculate = function() {this._enableCalculate = false;}/*** 鼠標繪制完成后,派發總事件的接口* @name DrawingManager#overlaycomplete* @event* @param {Event Object} e 回調函數會返回event參數,包括以下返回值:* <br />{"<b>drawingMode</b> : {DrawingType} 當前的繪制模式* <br />"<b>overlay</b>:{Marker||Polyline||Polygon||Circle} 對應的繪制模式返回對應的覆蓋物* <br />"<b>calculate</b>:{Number} 需要開啟計算模式才會返回這個值,當繪制線的時候返回距離、繪制多邊形、圓、矩形時候返回面積,單位為米,* <br />"<b>label</b>:{Label} 計算面積時候出現在Map上的Label對象** @example <b>參考示例:</b>* myDrawingManagerObject.addEventListener("overlaycomplete", function(e) {* alert(e.drawingMode);* alert(e.overlay);* alert(e.calculate);* alert(e.label);* });*//*** 繪制點完成后,派發的事件接口* @name DrawingManager#markercomplete* @event* @param {Marker} overlay 回調函數會返回相應的覆蓋物,* <br />{"<b>overlay</b> : {Marker} ** @example <b>參考示例:</b>* myDrawingManagerObject.addEventListener("circlecomplete", function(e, overlay) {* alert(overlay);* });*//*** 繪制圓完成后,派發的事件接口* @name DrawingManager#circlecomplete* @event* @param {Circle} overlay 回調函數會返回相應的覆蓋物,* <br />{"<b>overlay</b> : {Circle} *//*** 繪制線完成后,派發的事件接口* @name DrawingManager#polylinecomplete* @event* @param {Polyline} overlay 回調函數會返回相應的覆蓋物,* <br />{"<b>overlay</b> : {Polyline} *//*** 繪制多邊形完成后,派發的事件接口* @name DrawingManager#polygoncomplete* @event* @param {Polygon} overlay 回調函數會返回相應的覆蓋物,* <br />{"<b>overlay</b> : {Polygon} *//*** 繪制矩形完成后,派發的事件接口* @name DrawingManager#rectanglecomplete* @event* @param {Polygon} overlay 回調函數會返回相應的覆蓋物,* <br />{"<b>overlay</b> : {Polygon} *//*** 初始化狀態* @param {Map} 地圖實例* @param {Object} 參數*/DrawingManager.prototype._initialize = function(map, opts) {/*** map對象* @private* @type {Map}*/this._map = map;/*** 配置對象* @private* @type {Object}*/this._opts = opts;/*** 當前的繪制模式, 默認是繪制點* @private* @type {DrawingType}*/this._drawingType = opts.drawingMode || BMAP_DRAWING_MARKER;/*** 是否添加添加鼠標繪制工具欄面板*/if (opts.enableDrawingTool) {var drawingTool = new DrawingTool(this, opts.drawingToolOptions);this._drawingTool = drawingTool;map.addControl(drawingTool);}//是否計算繪制出的面積 if (opts.enableCalculate === true) {this.enableCalculate();} else {this.disableCalculate();}/*** 是否已經開啟了繪制狀態* @private* @type {Boolean}*/this._isOpen = !!(opts.isOpen === true);if (this._isOpen) {this._open();}this.markerOptions = opts.markerOptions || {};this.circleOptions = opts.circleOptions || {};this.polylineOptions = opts.polylineOptions || {};this.polygonOptions = opts.polygonOptions || {};this.rectangleOptions = opts.rectangleOptions || {};/**是否越界 */this._outRange=!!(opts.outRange === true);this._hasLabel=!!(opts.hasLabel === true);},DrawingManager.prototype._outRangeAction= function(){this._outRange=true;}DrawingManager.prototype._inRangeAction= function(){this._outRange=false;}/*** 開啟地圖的繪制狀態* @return {Boolean},開啟繪制狀態成功,返回true;否則返回false。*/DrawingManager.prototype._open = function() {this._isOpen = true;//添加遮罩,所有鼠標操作都在這個遮罩上完成if (!this._mask) {this._mask = new Mask();}this._map.addOverlay(this._mask);this._setDrawingMode(this._drawingType);}/*** 設置當前的繪制模式* @param {DrawingType}*/DrawingManager.prototype._setDrawingMode = function(drawingType) {this._drawingType = drawingType;/*** 開啟編輯狀態時候才重新進行事件綁定*/if (this._isOpen) {//清空之前的自定義事件this._mask.__listeners = {};switch (drawingType) {case BMAP_DRAWING_MARKER:this._bindMarker();break;case BMAP_DRAWING_CIRCLE:this._bindCircle();break;case BMAP_DRAWING_POLYLINE:case BMAP_DRAWING_POLYGON:this._bindPolylineOrPolygon();break;case BMAP_DRAWING_RECTANGLE:this._bindRectangle();break;}}/** * 如果添加了工具欄,則也需要改變工具欄的樣式*/if (this._drawingTool && this._isOpen) {this._drawingTool.setStyleByDrawingMode(drawingType);}}/*** 關閉地圖的繪制狀態* @return {Boolean},關閉繪制狀態成功,返回true;否則返回false。*/DrawingManager.prototype._close = function() {this._isOpen = false;if (this._mask) {this._map.removeOverlay(this._mask);}/** * 如果添加了工具欄,則關閉時候將工具欄樣式設置為拖拽地圖*/if (this._drawingTool) {this._drawingTool.setStyleByDrawingMode("hander");}}/*** 綁定鼠標畫點的事件*/DrawingManager.prototype._bindMarker = function() {var me = this,map = this._map,mask = this._mask;/*** 鼠標點擊的事件*/var clickAction = function (e) {// 往地圖上添加markervar marker = new BMap.Marker(e.point, me.markerOptions);map.addOverlay(marker);me._dispatchOverlayComplete(marker);}mask.addEventListener('click', clickAction);}/*** 綁定鼠標畫圓的事件*/DrawingManager.prototype._bindCircle = function() {var me = this,map = this._map,mask = this._mask,circle = null,centerPoint = null; //圓的中心點/*** 開始繪制圓形*/var startAction = function (e) {centerPoint = e.point;circle = new BMap.Circle(centerPoint, 0, me.circleOptions);map.addOverlay(circle);mask.enableEdgeMove();mask.addEventListener('mousemove', moveAction);baidu.on(document, 'mouseup', endAction);}/*** 繪制圓形過程中,鼠標移動過程的事件*/var moveAction = function(e) {circle.setRadius(me._map.getDistance(centerPoint, e.point));}/*** 繪制圓形結束*/var endAction = function (e) {var calculate = me._calculate(circle, e.point);me._dispatchOverlayComplete(circle, calculate);centerPoint = null;mask.disableEdgeMove();mask.removeEventListener('mousemove', moveAction);baidu.un(document, 'mouseup', endAction);}/*** 鼠標點擊起始點*/var mousedownAction = function (e) {baidu.preventDefault(e);baidu.stopBubble(e);if (centerPoint == null) {startAction(e);} }mask.addEventListener('mousedown', mousedownAction);}/*** 畫線和畫多邊形相似性比較大,公用一個方法*/DrawingManager.prototype._bindPolylineOrPolygon = function() {var me = this,map = this._map,mask = this._mask,points = [], //用戶繪制的點drawPoint = null; //實際需要畫在地圖上的點overlay = null,isBinded = false;/*** 鼠標點擊的事件*/var startAction = function (e) { if(me._outRange){return;} points.push(e.point);drawPoint = points.concat(points[points.length - 1]);if (points.length == 1) {if (me._drawingType == BMAP_DRAWING_POLYLINE) {overlay = new BMap.Polyline(drawPoint, me.polylineOptions);} else if (me._drawingType == BMAP_DRAWING_POLYGON) {overlay = new BMap.Polygon(drawPoint, me.polygonOptions);}map.addOverlay(overlay);} else {overlay.setPath(drawPoint);}if (!isBinded) {isBinded = true;mask.enableEdgeMove();mask.addEventListener('mousemove', mousemoveAction);mask.addEventListener('dblclick', dblclickAction);}}/*** 鼠標移動過程的事件*/var mousemoveAction = function(e) {//自定義---如果超出范圍,禁止地圖自動平移if(me._outRange){mask.disableEdgeMove();return;}overlay.setPositionAt(drawPoint.length - 1, e.point);}/*** 鼠標雙擊的事件*/var dblclickAction = function (e) {baidu.stopBubble(e);isBinded = false;mask.disableEdgeMove();mask.removeEventListener('mousemove', mousemoveAction);mask.removeEventListener('dblclick', dblclickAction);overlay.setPath(points);var calculate = me._calculate(overlay, points.pop());me._dispatchOverlayComplete(overlay, calculate);points.length = 0;drawPoint.length = 0;}mask.addEventListener('click', startAction);//雙擊時候不放大地圖級別mask.addEventListener('dblclick', function(e){baidu.stopBubble(e);});}/*** 綁定鼠標畫矩形的事件*/DrawingManager.prototype._bindRectangle = function() {var me = this,map = this._map,mask = this._mask,polygon = null,startPoint = null;/*** 開始繪制矩形*/var startAction = function (e) {baidu.stopBubble(e);baidu.preventDefault(e);startPoint = e.point;var endPoint = startPoint;polygon = new BMap.Polygon(me._getRectanglePoint(startPoint, endPoint), me.rectangleOptions);map.addOverlay(polygon);mask.enableEdgeMove();mask.addEventListener('mousemove', moveAction);baidu.on(document, 'mouseup', endAction);}/*** 繪制矩形過程中,鼠標移動過程的事件*/var moveAction = function(e) {polygon.setPath(me._getRectanglePoint(startPoint, e.point));}/*** 繪制矩形結束*/var endAction = function (e) {var calculate = me._calculate(polygon, polygon.getPath()[2]);me._dispatchOverlayComplete(polygon, calculate);startPoint = null;mask.disableEdgeMove();mask.removeEventListener('mousemove', moveAction);baidu.un(document, 'mouseup', endAction);}mask.addEventListener('mousedown', startAction);}/*** 添加顯示所繪制圖形的面積或者長度* @param {overlay} 覆蓋物* @param {point} 顯示的位置*/DrawingManager.prototype._calculate = function (overlay, point) {var result = {data : 0, //計算出來的長度或面積label : null //顯示長度或面積的label對象};if (this._enableCalculate && BMapLib.GeoUtils) {var type = overlay.toString();//不同覆蓋物調用不同的計算方法switch (type) {case "[object Polyline]":result.data = BMapLib.GeoUtils.getPolylineDistance(overlay);break;case "[object Polygon]":result.data = BMapLib.GeoUtils.getPolygonArea(overlay);break;case "[object Circle]":var radius = overlay.getRadius();result.data = Math.PI * radius * radius;break;}//一場情況處理if (!result.data || result.data < 0) {result.data = 0;} else {//保留2位小數位result.data = result.data.toFixed(2);}//如果需要顯示LABEL并且面積大于0if(this._hasLabel && result.data >0){//把標簽的位置放到了最后一個點的位置result.label = this._addLabel(point, result.data);}}return result;}/*** 開啟測距和測面功能需要依賴于GeoUtils庫* 所以這里判斷用戶是否已經加載,若未加載則用js動態加載*/DrawingManager.prototype._addGeoUtilsLibrary = function () {if (!BMapLib.GeoUtils) {var script = document.createElement('script');script.setAttribute("type", "text/javascript");script.setAttribute("src", 'http://api.map.baidu.com/library/GeoUtils/1.2/src/GeoUtils_min.js');document.body.appendChild(script);}}/*** 向地圖中添加文本標注* @param {Point}* @param {String} 所以顯示的內容*/DrawingManager.prototype._addLabel = function (point, content) {var label = new BMap.Label(content, {position: point});this._map.addOverlay(label);return label;}/*** 根據起終點獲取矩形的四個頂點* @param {Point} 起點* @param {Point} 終點*/DrawingManager.prototype._getRectanglePoint = function (startPoint, endPoint) {return [new BMap.Point(startPoint.lng,startPoint.lat),new BMap.Point(endPoint.lng,startPoint.lat),new BMap.Point(endPoint.lng,endPoint.lat),new BMap.Point(startPoint.lng,endPoint.lat)];}/*** 派發事件*/DrawingManager.prototype._dispatchOverlayComplete = function (overlay, calculate) {var options = {'overlay' : overlay,'drawingMode' : this._drawingType,'calculate' : calculate.data || null,'label' : calculate.label || null};this.dispatchEvent(this._drawingType + 'complete', overlay);this.dispatchEvent('overlaycomplete', options);}/*** 創建遮罩對象*/function Mask(){/*** 鼠標到地圖邊緣的時候是否自動平移地圖*/this._enableEdgeMove = false;}Mask.prototype = new BMap.Overlay();// Mask.disableMassClear();/*** 這里不使用api中的自定義事件,是為了更靈活使用*/Mask.prototype.dispatchEvent = baidu.lang.Class.prototype.dispatchEvent;Mask.prototype.addEventListener = baidu.lang.Class.prototype.addEventListener;Mask.prototype.removeEventListener = baidu.lang.Class.prototype.removeEventListener;Mask.prototype.initialize = function(map){var me = this;// this.se = false;this._map = map;var div = this.container = document.createElement("div");div.id="mask";var size = this._map.getSize();div.style.cssText = "position:absolute;background:url(about:blank);cursor:crosshair;width:" + size.width + "px;height:" + size.height + "px";this._map.addEventListener('resize', function(e) {me._adjustSize(e.size);});this._map.getPanes().floatPane.appendChild(div);this._bind();return div; };Mask.prototype.draw = function() {var map = this._map,point = map.pixelToPoint(new BMap.Pixel(0, 0)),pixel = map.pointToOverlayPixel(point);this.container.style.left = pixel.x + "px";this.container.style.top = pixel.y + "px"; };/*** 開啟鼠標到地圖邊緣,自動平移地圖*/Mask.prototype.enableEdgeMove = function() {this._enableEdgeMove = true;}/*** 關閉鼠標到地圖邊緣,自動平移地圖*/Mask.prototype.disableEdgeMove = function() {clearInterval(this._edgeMoveTimer);this._enableEdgeMove = false;}/*** 綁定事件,派發自定義事件*/Mask.prototype._bind = function() {var me = this,map = this._map,container = this.container,lastMousedownXY = null,lastClickXY = null;/*** 根據event對象獲取鼠標的xy坐標對象* @param {Event}* @return {Object} {x:e.x, y:e.y}*/var getXYbyEvent = function(e){return {x : e.clientX,y : e.clientY}};var domEvent = function(e) {var type = e.type;e = baidu.getEvent(e);point = me.getDrawPoint(e); //當前鼠標所在點的地理坐標var dispatchEvent = function(type) {e.point = point;me.dispatchEvent(e);}if (type == "mousedown") {lastMousedownXY = getXYbyEvent(e);}var nowXY = getXYbyEvent(e);//click經過一些特殊處理派發,其他同事件按正常的dom事件派發if (type == "click") {//鼠標點擊過程不進行移動才派發click和dblclickif (Math.abs(nowXY.x - lastMousedownXY.x) < 5 && Math.abs(nowXY.y - lastMousedownXY.y) < 5 ) {if (!lastClickXY || !(Math.abs(nowXY.x - lastClickXY.x) < 5 && Math.abs(nowXY.y - lastClickXY.y) < 5)) {dispatchEvent('click');lastClickXY = getXYbyEvent(e);} else {lastClickXY = null;}}} else {dispatchEvent(type);}}/*** 將事件都遮罩層的事件都綁定到domEvent來處理*/var events = ['click', 'mousedown', 'mousemove', 'mouseup', 'dblclick'],index = events.length;while (index--) {baidu.on(container, events[index], domEvent);}//鼠標移動過程中,到地圖邊緣后自動平移地圖baidu.on(container, 'mousemove', function(e) {if (me._enableEdgeMove) {me.mousemoveAction(e);}});};//鼠標移動過程中,到地圖邊緣后自動平移地圖Mask.prototype.mousemoveAction = function(e) {function getClientPosition(e) {var clientX = e.clientX,clientY = e.clientY;if (e.changedTouches) {clientX = e.changedTouches[0].clientX;clientY = e.changedTouches[0].clientY;}return new BMap.Pixel(clientX, clientY);}var map = this._map,me = this,pixel = map.pointToPixel(this.getDrawPoint(e)),clientPos = getClientPosition(e),offsetX = clientPos.x - pixel.x,offsetY = clientPos.y - pixel.y;pixel = new BMap.Pixel((clientPos.x - offsetX), (clientPos.y - offsetY));this._draggingMovePixel = pixel;var point = map.pixelToPoint(pixel),eventObj = {pixel: pixel,point: point};// 拖拽到地圖邊緣移動地圖this._panByX = this._panByY = 0;if (pixel.x <= 20 || pixel.x >= map.width - 20|| pixel.y <= 50 || pixel.y >= map.height - 10) {if (pixel.x <= 20) {this._panByX = 8;} else if (pixel.x >= map.width - 20) {this._panByX = -8;}if (pixel.y <= 50) {this._panByY = 8;} else if (pixel.y >= map.height - 10) {this._panByY = -8;}if (!this._edgeMoveTimer) {this._edgeMoveTimer = setInterval(function(){map.panBy(me._panByX, me._panByY, {"noAnimation": true});}, 30);}} else {if (this._edgeMoveTimer) {clearInterval(this._edgeMoveTimer);this._edgeMoveTimer = null;}}}/** 調整大小* @param {Size}*/Mask.prototype._adjustSize = function(size) {this.container.style.width = size.width + 'px';this.container.style.height = size.height + 'px';};/*** 獲取當前繪制點的地理坐標** @param {Event} e e對象* @return Point對象的位置信息*/Mask.prototype.getDrawPoint = function(e) {var map = this._map,trigger = baidu.getTarget(e),x = e.offsetX || e.layerX || 0,y = e.offsetY || e.layerY || 0;if (trigger.nodeType != 1) trigger = trigger.parentNode;while (trigger && trigger != map.getContainer()) {if (!(trigger.clientWidth == 0 &&trigger.clientHeight == 0 &&trigger.offsetParent && trigger.offsetParent.nodeName == 'TD')) {x += trigger.offsetLeft || 0;y += trigger.offsetTop || 0;}trigger = trigger.offsetParent;}var pixel = new BMap.Pixel(x, y);var point = map.pixelToPoint(pixel);return point;}/*** 繪制工具面板,自定義控件*/function DrawingTool(drawingManager, drawingToolOptions) {this.drawingManager = drawingManager;drawingToolOptions = this.drawingToolOptions = drawingToolOptions || {};// 默認停靠位置和偏移量this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;this.defaultOffset = new BMap.Size(10, 10);//默認所有工具欄都顯示this.defaultDrawingModes = [BMAP_DRAWING_MARKER,BMAP_DRAWING_CIRCLE,BMAP_DRAWING_POLYLINE,BMAP_DRAWING_POLYGON,BMAP_DRAWING_RECTANGLE];//工具欄可顯示的繪制模式if (drawingToolOptions.drawingModes) {this.drawingModes = drawingToolOptions.drawingModes;} else {this.drawingModes = this.defaultDrawingModes}//用戶設置停靠位置和偏移量if (drawingToolOptions.anchor) {this.setAnchor(drawingToolOptions.anchor);}if (drawingToolOptions.offset) {this.setOffset(drawingToolOptions.offset);}}// 通過JavaScript的prototype屬性繼承于BMap.ControlDrawingTool.prototype = new BMap.Control();// 自定義控件必須實現自己的initialize方法,并且將控件的DOM元素返回// 在本方法中創建個div元素作為控件的容器,并將其添加到地圖容器中DrawingTool.prototype.initialize = function(map){// 創建一個DOM元素var container = this.container = document.createElement("div");container.className = "BMapLib_Drawing";//用來設置外層邊框陰影var panel = this.panel = document.createElement("div");panel.className = "BMapLib_Drawing_panel";if (this.drawingToolOptions && this.drawingToolOptions.scale) {this._setScale(this.drawingToolOptions.scale);}container.appendChild(panel);// 添加內容panel.innerHTML = this._generalHtml();//綁定事件this._bind(panel);// 添加DOM元素到地圖中map.getContainer().appendChild(container);// 將DOM元素返回return container;}//生成工具欄的html元素DrawingTool.prototype._generalHtml = function(map){//鼠標經過工具欄上的提示信息var tips = {};tips["hander"] = "拖動地圖";tips[BMAP_DRAWING_MARKER] = "畫點";tips[BMAP_DRAWING_CIRCLE] = "畫圓";tips[BMAP_DRAWING_POLYLINE] = "畫折線";tips[BMAP_DRAWING_POLYGON] = "畫多邊形";tips[BMAP_DRAWING_RECTANGLE] = "畫矩形";var getItem = function(className, drawingType) {return '<a class="' + className + '" drawingType="' + drawingType + '" href="javascript:void(0)" title="' + tips[drawingType] + '" onfocus="this.blur()"></a>';}var html = [];html.push(getItem("BMapLib_box BMapLib_hander", "hander"));for (var i = 0, len = this.drawingModes.length; i < len; i++) {var classStr = 'BMapLib_box BMapLib_' + this.drawingModes[i];if (i == len-1) {classStr += ' BMapLib_last';}html.push(getItem(classStr, this.drawingModes[i]));}return html.join('');}/*** 設置工具欄的縮放比例*/DrawingTool.prototype._setScale = function(scale){var width = 390,height = 50,ml = -parseInt((width - width * scale) / 2, 10),mt = -parseInt((height - height * scale) / 2, 10);this.container.style.cssText = ["-moz-transform: scale(" + scale + ");","-o-transform: scale(" + scale + ");","-webkit-transform: scale(" + scale + ");","transform: scale(" + scale + ");","margin-left:" + ml + "px;","margin-top:" + mt + "px;","*margin-left:0px;", //ie6、7"*margin-top:0px;", //ie6、7"margin-left:0px\\0;", //ie8"margin-top:0px\\0;", //ie8//ie下使用濾鏡"filter: progid:DXImageTransform.Microsoft.Matrix(","M11=" + scale + ",","M12=0,","M21=0,","M22=" + scale + ",","SizingMethod='auto expand');"].join('');}//綁定工具欄的事件DrawingTool.prototype._bind = function(panel){var me = this;baidu.on(this.panel, 'click', function (e) {var target = baidu.getTarget(e);var drawingType = target.getAttribute('drawingType');me.setStyleByDrawingMode(drawingType);me._bindEventByDraingMode(drawingType);});}//設置工具欄當前選中的項樣式DrawingTool.prototype.setStyleByDrawingMode = function(drawingType){if (!drawingType) {return;}var boxs = this.panel.getElementsByTagName("a");for (var i = 0, len = boxs.length; i < len; i++) {var box = boxs[i];if (box.getAttribute('drawingType') == drawingType) {var classStr = "BMapLib_box BMapLib_" + drawingType + "_hover";if (i == len - 1) {classStr += " BMapLib_last";}box.className = classStr;} else {box.className = box.className.replace(/_hover/, "");}}}//設置工具欄當前選中的項樣式DrawingTool.prototype._bindEventByDraingMode = function(drawingType){var drawingManager = this.drawingManager;//點在拖拽地圖的按鈕上if (drawingType == "hander") {drawingManager.close();} else {drawingManager.setDrawingMode(drawingType);drawingManager.open();}}//用來存儲用戶實例化出來的drawingmanager對象var instances = [];/** 關閉其他實例的繪制模式* @param {DrawingManager} 當前的實例*/function closeInstanceExcept(instance) {var index = instances.length;while (index--) {if (instances[index] != instance) {instances[index].close();}}}})();

?

總結

以上是生活随笔為你收集整理的鼠标绘制工具加是否超出范围判断的全部內容,希望文章能夠幫你解決所遇到的問題。

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

激情文学丁香 | 欧美日韩一区久久 | 国产精品亚洲a | 久草在线99 | 国产成人综 | 久久99国产精品二区护士 | 91黄在线看 | 久久久av电影 | 亚洲人成人天堂h久久 | 国产乱码精品一区二区三区介绍 | 日韩免费一区二区在线观看 | 欧洲性视频 | 日韩精品在线视频 | 国产剧情一区 | 国语精品久久 | 亚洲国产精品成人va在线观看 | 五月婷婷欧美 | 精品国产乱码久久久久 | 在线观看免费日韩 | 中文字幕日韩国产 | 夜夜操天天干 | 三级黄色片在线观看 | 激情开心站 | 国产精品一区二区久久精品爱涩 | 五月婷丁香网 | 91自拍视频在线观看 | 综合激情av| 奇米网在线观看 | 99在线播放 | 久久久久久久福利 | 国产69精品久久99的直播节目 | 欧美日韩亚洲一 | 9ⅰ精品久久久久久久久中文字幕 | 九九爱免费视频在线观看 | 国产精品99久久久久的智能播放 | 欧美国产日韩在线观看 | 中文伊人 | 日韩国产精品久久 | 美女国内精品自产拍在线播放 | 久久久久久久久久久免费av | 成人动漫视频在线 | 国产一级特黄毛片在线毛片 | 欧美日韩国产区 | 亚洲永久av| 在线观看成人av | 韩日精品中文字幕 | 97精品国自产拍在线观看 | 亚洲精品久久久久中文字幕二区 | 色婷婷激情电影 | 国产黄a三级三级三级三级三级 | 在线黄色国产 | 91在线视频免费观看 | 日批在线看| 国产精品视屏 | 午夜久久精品 | 黄色软件在线观看免费 | 中文字幕久久久精品 | 91视频久久久久久 | 天天爽人人爽 | 免费污片 | 丁五月婷婷 | 97偷拍视频 | 欧美日韩国产在线一区 | 精品国产一区二区三区在线观看 | 人人爱人人做人人爽 | 97免费视频在线播放 | www.com黄 | 日韩激情视频在线 | 美女黄视频免费看 | 午夜久久久精品 | 国产精品私人影院 | 午夜精品一区二区三区免费视频 | 九九久久视频 | 亚洲区精品 | 亚洲精品在线视频网站 | 亚洲成人高清在线 | 欧美色就是色 | 亚洲天堂自拍视频 | 天天色天天爱天天射综合 | 毛片网免费 | 国产999在线 | 国产一区二区免费看 | 在线观看av网站 | 色婷婷狠狠五月综合天色拍 | 亚洲国产美女久久久久 | 麻豆视频在线播放 | 久久毛片高清国产 | 丁香5月婷婷久久 | 免费黄在线看 | 波多野结衣在线观看一区二区三区 | 亚洲午夜av电影 | 国产成人精品亚洲精品 | 国产精品久久一区二区三区不卡 | 91在线精品秘密一区二区 | 91丨九色丨91啦蝌蚪老版 | 久久免费视频这里只有精品 | 亚洲精品国产第一综合99久久 | 色婷婷99| 五月天丁香综合 | 婷婷亚洲最大 | 亚洲国产精品传媒在线观看 | av片子在线观看 | 97超碰资源站 | 超碰在线公开 | 国产aaa免费视频 | 亚洲激精日韩激精欧美精品 | 亚洲va欧美va人人爽春色影视 | 97在线精品 | 狠狠狠狠狠狠天天爱 | 日韩综合一区二区三区 | 在线免费国产 | 91黄色视屏 | 色偷偷网站视频 | 精品久久久久久亚洲综合网站 | 亚洲久草在线视频 | 天天操天天射天天爱 | 91福利免费 | 亚洲精品欧美专区 | 99国产精品久久久久老师 | 九九色综合 | 国产99免费 | 久草在线最新免费 | 欧美疯狂性受xxxxx另类 | 99国产成+人+综合+亚洲 欧美 | 国产伦理一区二区三区 | 一区二区三区免费在线观看 | 午夜精品久久久久久久99水蜜桃 | 99精品国产成人一区二区 | 欧美精品国产综合久久 | 久久久久一区 | 久久成人欧美 | 天堂网中文在线 | 综合久久久久久 | 亚在线播放中文视频 | 激情五月av | 国产高清视频在线播放 | 8x8x在线观看视频 | 日韩一区二区三免费高清在线观看 | 免费电影一区二区三区 | 亚洲黄色激情小说 | 精品三级av | 国产专区日韩专区 | 亚洲国产高清在线观看视频 | 久久一区二区三区超碰国产精品 | 色之综合网 | 国产中文字幕一区二区三区 | av888av.com| 精品一区91 | 2023天天干 | 欧美精品久久久 | 国产精品理论在线观看 | 日韩免费电影网 | 91精品在线播放 | 久草线| 亚洲欧美视频在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产精品久久久久久久免费 | 精品久久久久久久久久久久 | 色综合天天综合 | 国产日韩精品一区二区 | 久草爱视频 | 久久 在线 | 免费a一级| 五月天精品视频 | 国产小视频免费在线网址 | 在线观看av小说 | 国产福利免费在线观看 | 人人爽人人爽人人 | 蜜臀av.com| 久久综合影视 | 国产视频二 | 国产精品毛片网 | 激情综合国产 | 欧美色综合天天久久综合精品 | 国产午夜三级一区二区三桃花影视 | 91视频午夜 | 又爽又黄又刺激的视频 | 色视频国产直接看 | 欧美aaaxxxx做受视频 | 日韩三级视频在线观看 | 97夜夜澡人人爽人人免费 | 久久久精品国产一区二区三区 | www.操.com| 日韩欧美一区二区在线 | 丁香资源影视免费观看 | 人人干干人人 | 成人av一级片 | 国产视频精品免费 | 在线观看中文字幕网站 | 亚洲精品国产精品国自产在线 | 精品一区av| 亚洲综合视频在线 | www.午夜| 精品久久1 | 337p西西人体大胆瓣开下部 | 丁香婷婷激情网 | 网址你懂的在线观看 | 免费看的黄色片 | 国产99在线免费 | 日日碰狠狠躁久久躁综合网 | 亚洲视频一 | 在线小视频你懂的 | 91久久偷偷做嫩草影院 | 中文字幕乱码在线播放 | 99久久精品免费看国产一区二区三区 | 精品国产一区二区三区久久久 | 四川妇女搡bbbb搡bbbb搡 | 超碰官网| 区一区二区三区中文字幕 | 五月婷婷丁香在线观看 | 国产精品美女在线观看 | 五月激情综合婷婷 | 美女精品久久久 | 国外成人在线视频网站 | 在线视频电影 | 天天干,夜夜爽 | 国产 在线 日韩 | 激情婷婷色 | 韩国一区二区三区视频 | 亚洲一区免费在线 | 国产一区福利 | 亚洲网久久 | 国产在线中文字幕 | 国产免费视频一区二区裸体 | 最近免费中文字幕 | 久久精品一区二区三区视频 | 二区精品视频 | 特级黄色视频毛片 | 24小时日本在线www免费的 | 中文字幕精品一区二区精品 | 日韩中文字幕在线看 | 日韩av在线网站 | 亚洲精品456在线播放第一页 | 五月婷婷香蕉 | 中文字幕免费高 | 国产精品美女www爽爽爽视频 | 人人爽人人片 | 国产精品久久久影视 | 日韩一区二区免费播放 | 日韩黄色网络 | 国产香蕉97碰碰久久人人 | 午夜精品久久久久 | 99精品国产福利在线观看免费 | 国产小视频福利在线 | 亚洲国产激情 | www.xxx.性狂虐 | 亚洲精品视频在线播放 | 欧美日韩在线播放一区 | 91豆花在线观看 | 日韩高清精品免费观看 | 国产在线p | 欧美精品在线观看 | 色婷婷久久一区二区 | 在线影院av | 久久久久久激情 | 婷婷久久综合网 | 波多野结衣理论片 | 国产69精品久久久久9999apgf | 天天操天天爽天天干 | 国产精品永久免费在线 | www178ccom视频在线 | 成人一级片视频 | 午夜视频久久久 | 亚洲精品免费在线视频 | 国产玖玖精品视频 | 国产精品久久久久婷婷 | 亚洲热久久 | 伊人中文网 | 天天操天天射天天操 | 日韩精品中文字幕有码 | 日韩精品最新在线观看 | 国产精品一区二区美女视频免费看 | www黄色com | 欧美一区二区日韩一区二区 | 欧美精品一区二区性色 | 97超碰资源 | 国产毛片久久 | 网站你懂的 | 三级av免费| 日本黄色黄网站 | 亚洲免费不卡 | 免费在线观看一区二区三区 | 少妇bbw搡bbbb搡bbbb | 国产一级精品视频 | 国产精品视频久久久 | 99热在线精品观看 | 97在线精品 | 欧美日韩二三区 | 久久99精品国产99久久 | 岛国av在线| 天天干 天天摸 天天操 | 狠狠ri | 成人avav| 911国产| 日韩视频一区二区 | 亚州精品天堂中文字幕 | 亚洲国产欧美在线人成大黄瓜 | 激情av网址 | 2019精品手机国产品在线 | 天天玩天天干天天操 | 国产伦精品一区二区三区照片91 | 久久人人爽人人爽人人片av软件 | 成人一区二区在线 | 精品国产一二三四区 | 国产福利在线 | 91久久人澡人人添人人爽欧美 | 午夜精品婷婷 | 精品国产精品国产偷麻豆 | 国产色影院 | 久久久久一区 | 亚洲影音先锋 | 亚洲免费小视频 | 成人h视频在线播放 | 亚洲国产mv | 国产精品99久久久久 | 久久婷婷影视 | 成人在线免费视频观看 | 黄色特一级 | 欧美日本不卡 | 国产女人40精品一区毛片视频 | 美女黄频在线观看 | 99视频在线观看一区三区 | 天天插狠狠干 | 黄色av一级 | 久久国产精品一区二区三区 | 500部大龄熟乱视频使用方法 | 色婷婷88av视频一二三区 | 成人av影院在线观看 | 日韩欧美一区二区三区在线观看 | 亚洲老妇xxxxxx | 国产露脸91国语对白 | 99久久久免费视频 | 国产成人333kkk | 中文字幕免费高清 | 国产精品一区在线播放 | 精品国产伦一区二区三区免费 | 亚洲精品合集 | 婷婷av网 | 黄色毛片在线看 | 极品久久久 | 十八岁免进欧美 | 欧美精品成人在线 | 国产精品麻豆视频 | 2019国产精品 | 午夜视频在线观看一区二区三区 | 久久人人爽av | 国产一区欧美在线 | 在线v片免费观看视频 | 亚洲 欧洲av | 亚洲一区精品二人人爽久久 | 欧美一区二区三区免费看 | 午夜在线免费观看 | 91av电影在线 | 日本在线观看一区二区 | 精品在线观看视频 | 国产精品色婷婷 | 97香蕉久久超级碰碰高清版 | 最新真实国产在线视频 | 久久免费毛片视频 | 国产一级片一区二区三区 | 色美女在线 | 四虎www| 在线观看网站你懂的 | 在线一二三区 | 久热av在线 | 狠狠gao| 超碰在线1 | 日韩免费电影一区二区 | 国产精品aⅴ | 久久精品99久久 | 最近更新中文字幕 | 亚洲无在线 | 色婷婷激情网 | 国产精品理论片在线播放 | 在线观看岛国av | 国产中文字幕网 | 视频在线日韩 | 亚洲91精品| 欧美激情视频一区 | 欧美国产日韩一区二区 | 九九热re | 国内精品在线看 | 国产亚洲一区二区三区 | 97香蕉超级碰碰久久免费软件 | 国产精品网址在线观看 | 不卡av免费在线观看 | 日日爽天天 | 日韩欧美精品在线观看视频 | 在线直播av| 成人aaa毛片| 免费看色的网站 | 亚洲精品一区二区三区新线路 | 西西444www大胆高清视频 | 久久成人一区二区 | 黄色免费电影网站 | 亚洲一区二区三区在线看 | 亚洲国产精品电影 | 91麻豆精品国产91久久久无限制版 | 久久精品视频在线免费观看 | 欧美性生爱| 99久久精品久久久久久动态片 | 精品福利在线视频 | 国内三级在线 | 久久久久久免费视频 | 中文字幕乱码电影 | 日本中文字幕电影在线免费观看 | 国产精品美女久久 | 日韩视频一区二区在线 | 97狠狠操| 国产一区在线视频 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 亚洲一级黄色大片 | 在线视频观看91 | 在线国产一区二区三区 | 国产69精品久久久久久 | 久久精品xxx | 在线a人片免费观看视频 | 96超碰在线| 天天躁日日 | 激情五月色播五月 | 婷婷丁香在线 | 久久精品视频5 | 久久精品黄| 亚洲视频h| 狠狠狠干 | 国产精品久久网 | 一本大道久久精品懂色aⅴ 五月婷社区 | 91成人精品在线 | 美女视频一区二区 | av网站免费在线 | 欧美一区,二区 | 欧美久久久久久久久久久 | 久久er99热精品一区二区三区 | 国产在线欧美日韩 | 国产精品亚州 | 天天曰夜夜爽 | 99久久精品国产一区 | 国产精品视频app | 国产福利专区 | 狠狠色狠狠色综合日日小说 | 久久免费一 | 日日摸日日爽 | 在线亚洲午夜片av大片 | 国产精品久久久久久久久久免费 | www.激情五月.com | 怡红院av久久久久久久 | 国产乱视频 | 97超碰总站 | 日本久久久亚洲精品 | 国产资源站 | 久久99国产综合精品免费 | 久草在线久草在线2 | 久久久久一区二区三区四区 | 色香天天| 国产精品av久久久久久无 | 色姑娘综合天天 | av成人免费 | 婷色在线 | 在线观看免费版高清版 | 久久免费高清 | www久久99| 日操操 | 久久精品播放 | 日韩成人xxxx | 久久精品女人毛片国产 | 黄色成人av | 亚洲精品视频在线免费播放 | 天天操操 | 亚洲毛片一区二区三区 | 日韩在线观看三区 | 免费观看成人 | 久草在线视频在线 | 狠狠干美女 | 国产精品美女网站 | 国产伦精品一区二区三区高清 | 国产精品一区免费在线观看 | 天天色天天射天天操 | 91成人精品观看 | 免费久久网 | 青草草在线视频 | 亚洲精品美女久久久久 | 国产小视频你懂的在线 | 91av精品 | 99人成在线观看视频 | 欧美在线久久 | 黄色看片| 丁香六月在线观看 | 成人久久毛片 | 91污污视频在线观看 | 欧洲在线免费视频 | 欧美日韩久久不卡 | 国产精品欧美久久久久无广告 | 丁香九月婷婷 | 成人va在线观看 | 丁香婷婷色综合亚洲电影 | 天天操操 | 人人玩人人添人人 | 又紧又大又爽精品一区二区 | 日日夜夜天天久久 | 三级黄色免费片 | 97超碰人人模人人人爽人人爱 | 国产成人一区二区精品非洲 | 91免费版在线 | 日本精品久久久久中文字幕 | 中文字幕a在线 | 日韩精品视频在线观看网址 | 久久综合视频网 | 天天操天天干天天爽 | 久草精品在线观看 | 国产成在线观看免费视频 | 欧美视频在线观看免费网址 | 91最新地址永久入口 | 国产不卡高清 | 色综合久久久久久久久五月 | 日韩久久久| 国产高清一| 在线国产一区二区 | 狠狠综合网 | 久久99精品久久久久久久久久久久 | 91精品一区二区在线观看 | 91在线看视频免费 | 午夜18视频在线观看 | 中文字幕在线免费观看视频 | 99国产精品 | 五月婷婷综合激情网 | 亚州国产精品久久久 | 二区三区av | 婷婷深爱五月 | 97在线视频免费播放 | 天天干天天操天天 | 亚洲国产欧美在线人成大黄瓜 | 国产福利91精品一区二区三区 | 在线国产日本 | 婷婷色综合色 | 黄色毛片视频免费观看中文 | 欧美91精品久久久久国产性生爱 | 亚洲天堂网视频在线观看 | 在线免费观看羞羞视频 | 九九九在线 | 国际精品久久久久 | 超碰在线99 | 久久久一本精品99久久精品66 | 在线不卡的av | 91精品国产综合久久久久久久 | 在线视频观看成人 | 国产精品黄色影片导航在线观看 | 久久精品9| 日韩精品欧美专区 | 中文字幕在线看视频国产中文版 | 超碰公开在线 | 在线免费观看av网站 | 国产精品成人久久 | 欧美日韩一级视频 | 狠狠狠的干 | 免费网址在线播放 | 免费麻豆视频 | 黄色大片入口 | 99在线视频播放 | 精品人妖videos欧美人妖 | 久久人人爽爽人人爽人人片av | 五月天色综合 | 欧美成人xxxx| 99在线看 | 国产亚洲精品久久久久久电影 | 区一区二在线 | 伊人天天综合 | 久久99亚洲网美利坚合众国 | 久久99精品视频 | 亚洲黄色三级 | 国产黄色av | 成人国产精品久久久 | 国产精品嫩草69影院 | 日韩免费一区二区在线观看 | 精品国产乱码一区二 | 国产成人在线网站 | 五月婷婷六月丁香 | 日日夜夜国产 | 成人影视免费看 | 亚洲久久视频 | 不卡精品视频 | 国产成人精品综合久久久久99 | 国产一卡二卡四卡国 | 中文字幕在线观看你懂的 | 亚洲视屏| 超碰在线个人 | av免费试看 | 久久情侣偷拍 | 亚洲精品乱码白浆高清久久久久久 | 亚洲综合视频在线播放 | 91精品国产成人 | 成年人在线免费看视频 | 日韩在线播放视频 | 亚洲婷婷综合色高清在线 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 九九热在线观看视频 | 亚洲精品动漫成人3d无尽在线 | 亚洲综合国产精品 | www.五月天激情 | 欧美日韩在线播放一区 | 超碰在线人人97 | 色综合久久五月天 | 就要干b | 久久精品看片 | 色婷婷88av视频一二三区 | 国产不卡一 | 97操碰 | 亚洲国产mv | 丁香免费视频 | 午夜久久久久久久久久久 | 亚洲黄色app | 久久夜av| 99人久久精品视频最新地址 | 亚洲在线a | 一区精品在线 | 久久三级毛片 | 一区二区三区在线电影 | 97精品久久 | www.色午夜.com | 国产精品你懂的在线观看 | 国产精品一区免费观看 | 国产一二区免费视频 | 色综合久久88 | 国产精品黄色av | 91亚瑟视频 | 午夜久久影视 | av解说在线观看 | .国产精品成人自产拍在线观看6 | 人人插人人做 | 999久久久 | 能在线观看的日韩av | 四虎影视8848aamm| 亚洲一区二区三区精品在线观看 | 免费看国产一级片 | 一区二区电影在线观看 | 日日夜夜精品视频天天综合网 | 亚洲精品啊啊啊 | 国产一级免费电影 | 久久综合九色综合97婷婷女人 | 亚洲男男gⅴgay双龙 | 欧洲精品亚洲精品 | 91精品夜夜 | 91爱爱网址 | 国产视频精品免费 | 日韩激情精品 | 香蕉影院在线 | 日韩欧美高清一区二区三区 | 91九色网站 | 激情久久久久 | 视频 天天草 | 九九欧美视频 | 国产成人av一区二区三区在线观看 | 在线观看mv的中文字幕网站 | 99综合久久 | 激情婷婷丁香 | 久一在线 | 99视频播放| 亚洲极色| 亚洲国产片色 | 天天干,夜夜爽 | 精品女同一区二区三区在线观看 | 国产日本高清 | 亚洲日本国产精品 | 免费观看成人网 | 中文字幕乱码电影 | 久久av中文字幕片 | 精品国产精品国产偷麻豆 | 免费成人在线观看视频 | 亚洲九九爱 | 又黄又爽的免费高潮视频 | 成人av在线观 | 天天操夜夜干 | 97超碰中文字幕 | 国内精品久久久久久中文字幕 | 国产亚洲精品成人av久久ww | www.久久婷婷 | 婷婷成人综合 | 91精品免费在线 | av观看网站 | 欧美aⅴ在线观看 | 亚洲伊人天堂 | 特级西西444www大胆高清无视频 | 激情图片qvod| 精品乱码一区二区三四区 | 美女国内精品自产拍在线播放 | 久久久精品国产一区二区 | 免费看特级毛片 | 日韩精品一区二区三区在线视频 | 国产精品久久久久久一区二区 | 亚洲国产成人在线播放 | 激情综合网天天干 | 国产小视频在线免费观看 | 欧美国产视频在线 | 99国产在线 | 96精品视频| 久久午夜羞羞影院 | 久久久久欧美精品 | 中文字幕在线观 | 日韩最新理论电影 | av中文字幕在线观看网站 | 成人av日韩 | 天堂av在线免费 | 色视频在线免费观看 | 欧美在线视频一区二区三区 | 日韩视频免费观看高清 | 五月综合色 | 久久婷婷精品视频 | 久草在线视频中文 | 丁香婷婷久久久综合精品国产 | 久久都是精品 | 少妇搡bbb | 在线观看免费黄视频 | 日韩视频一区二区三区在线播放免费观看 | 波多野结衣在线观看一区 | 欧美精品色 | 亚洲国产中文字幕在线观看 | 国产免费资源 | 精品福利视频在线 | 黄色精品久久久 | 一区二区三区电影大全 | 久久婷综合 | 精品在线看 | 中文字幕高清免费日韩视频在线 | 2020天天干夜夜爽 | 一区二区三区 中文字幕 | 99热这里有精品 | 亚洲欧洲精品在线 | av成人免费在线观看 | 国产一区二区电影在线观看 | www.看片网站 | av在线进入| 精品久久久精品 | 97夜夜澡人人双人人人喊 | 免费看污片 | 日日综合网 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 97视频在线免费观看 | 久久成年人网站 | 久久久精品网站 | 超碰在线资源 | 韩日精品在线观看 | 精品少妇一区二区三区在线 | 色九九在线| 国产精品一区专区欧美日韩 | 99九九视频 | 中文字幕精品一区二区精品 | 欧美一区二区三区在线播放 | 久久国语| 狠狠操狠狠干天天操 | 日本黄色免费在线 | 在线v片免费观看视频 | japanesexxxhd奶水 91在线精品一区二区 | 综合在线亚洲 | 亚洲第一色 | 456免费视频 | 国产精品毛片一区视频 | 日韩黄色在线电影 | 人人射人人射 | 在线播放av网址 | 国产在线视频导航 | 日韩精品视频在线观看网址 | 在线观看免费黄色 | 麻豆国产精品一区二区三区 | 国产成人av在线 | 综合亚洲视频 | 久久公开免费视频 | 国产精品视频全国免费观看 | 天天操人人要 | 日韩高清精品一区二区 | 欧美久久久 | 国产专区日韩专区 | 色在线高清 | av在线免费网站 | 精品国产免费久久 | 欧美亚洲成人xxx | 亚洲视频在线观看网站 | 超碰人人干人人 | 黄色大片入口 | 在线视频精品播放 | 在线成人av | 国产综合小视频 | 中文在线a∨在线 | 天天搞天天| 国产一区网址 | 国产成人黄色av | 免费在线观看av不卡 | 久久亚洲欧美日韩精品专区 | 九九九九九九精品任你躁 | 91麻豆精品国产91久久久无需广告 | 色视频网站免费观看 | 亚洲va韩国va欧美va精四季 | 成人 亚洲 欧美 | 麻豆视频免费在线播放 | 九九99 | 公开超碰在线 | 91在线免费公开视频 | 中文字幕亚洲高清 | 综合在线观看色 | 日韩电影精品 | 精品久久久久久久久久久院品网 | 日韩成人免费在线观看 | 色婷婷激情电影 | 天天做天天爱天天爽综合网 | 久精品一区 | 国产一级视频 | 精品一区 在线 | 精品免费视频 | 精品一区在线看 | 午夜精品视频一区 | 在线观看精品视频 | 97视频网址 | 国产尤物一区二区三区 | 国产黄色a| 免费视频久久久 | 国产a国产a国产a | 在线观看黄污 | 中文久久精品 | 亚洲一区二区三区毛片 | 日韩欧美网站 | 国产视频一区精品 | 国产精品久久综合 | 伊人丁香 | 九九久久国产精品 | 国产91在线免费视频 | 国产精品a久久 | 亚洲精品视频播放 | 国产九九九九九 | 亚洲精选视频在线 | 麻豆久久久久久久 | 激情婷婷六月 | 91大神精品视频在线观看 | 夜夜躁狠狠躁 | 国产在线观看黄 | 在线免费精品视频 | 国产小视频免费在线观看 | 99久久精品国产一区二区三区 | 97在线视| 又黄又刺激又爽的视频 | 国产精品一区二区av麻豆 | 丁香六月婷婷激情 | 99久久99久久免费精品蜜臀 | 麻豆一精品传二传媒短视频 | 亚洲最新合集 | 91精品色| www在线观看国产 | 日韩欧美中文 | 999免费视频 | 国产午夜激情视频 | 成人亚洲网| 99精品乱码国产在线观看 | 久久精品日本啪啪涩涩 | 国产v亚洲v | 91av在线不卡| 欧美午夜寂寞影院 | 久久久国产精品网站 | 91精品久久久久久综合乱菊 | 亚洲精品乱码久久久久久 | 五月天激情视频 | 国产精品视频线看 | 91porny九色91啦中文 | 久久精品99国产国产精 | 99精品免费网 | 77国产精品 | 亚洲精品成人av在线 | 日韩啪视频| 国产成人高清 | 国产亚洲精品久久久久久久久久 | 2018亚洲男人天堂 | 免费一区在线 | 99r在线精品 | 久久久午夜视频 | 久久av伊人 | 天天操夜夜想 | 色姑娘综合 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 成人免费在线电影 | 国产精品18久久久久白浆 | 97在线观看免费高清完整版在线观看 | 国产香蕉97碰碰碰视频在线观看 | 一本—道久久a久久精品蜜桃 | 六月激情丁香 | 九九久| 不卡日韩av | 中文字幕一区二区三区在线视频 | 人人看人人 | 九九免费视频 | 久久电影中文字幕视频 | 久久伊人国产精品 | 香蕉在线观看 | 婷婷激情5月天 | av丁香花| 免费韩国av | 日本精品午夜 | 国产免费xvideos视频入口 | 51精品国自产在线 | 亚洲成aⅴ人片久久青草影院 | 国产精品女同一区二区三区久久夜 | 国产精品美女久久久久久免费 | 99精品在线免费 | 成人手机在线视频 | 99视频国产精品 | 99视频在线 | 怡红院av| 久久久久免费看 | 香蕉精品视频在线观看 | 91成人天堂久久成人 | 国产成人免费在线观看 | 十八岁以下禁止观看的1000个网站 | 精品亚洲二区 | 亚洲精品久久久久中文字幕二区 | 久久精品xxx| 91九色蝌蚪视频网站 | 91av免费观看| 丁香花中文在线免费观看 | 日韩av成人在线观看 | 91视频免费网站 | 日韩免费精品 | 色综合久久中文综合久久牛 | 国产麻豆电影在线观看 | 在线免费观看黄色小说 | 麻豆一精品传二传媒短视频 | 精品国产一区二区在线 | 人人干人人做 | 免费黄色在线网站 | av免费电影网站 | 亚洲 成人 欧美 | 五月婷婷激情综合网 | 99国产在线视频 | 日韩免费播放 | av大全在线观看 | 九九综合久久 | 久久久亚洲精品 | 国产亚洲精品久久久久秋 | 99精品在线播放 | 91免费观看 | 91在线视频导航 | 亚州成人av在线 | 国产中文字幕视频在线 | 毛片网在线观看 | 国产麻豆精品久久 | 欧美日韩国产免费视频 | 日韩草比 | 成人久久 | 亚洲国产精品99久久久久久久久 | 玖玖视频免费在线 | 日本中文字幕在线一区 | 亚洲精品久久久蜜桃直播 | 日日爱网站| 国产亚洲无| 天天做日日爱夜夜爽 | 日韩精品免费在线观看 | 亚洲一区av | 深夜免费福利视频 | av先锋中文字幕 | 精品国产伦一区二区三区观看方式 | 国产精品人人做人人爽人人添 | 色香蕉视频 | 日本久久久久久久久 | 日韩精品欧美专区 | 丁香婷婷基地 | 中文字幕丝袜一区二区 | 天堂av在线网站 | 色99色 | 成人免费大片黄在线播放 | 国产r级在线观看 | 国产成人精品av | 97人人澡人人添人人爽超碰 | 亚洲精品一区二区三区在线观看 | 久久免费试看 | 日韩高清 一区 | 成人午夜电影网站 | 国产 视频 高清 免费 | 免费在线观看成年人视频 | 国产精品美女久久久久久久久久久 | 中文字幕精品三区 | 色橹橹欧美在线观看视频高清 | 亚洲国产成人高清精品 | 亚洲六月丁香色婷婷综合久久 | 精品亚洲欧美无人区乱码 | 激情综合一区 | 国产一区二区中文字幕 | 成人免费在线看片 | 视频福利在线 | www.亚洲黄| 亚av在线 | 国产中文自拍 | 国产又黄又爽无遮挡 | 久久激情小说 | 日韩av中文字幕在线免费观看 | 国产精品初高中精品久久 | 国产精品久久久久久久久软件 | 六月丁香综合网 | 国内精品免费久久影院 | 视频99爱| 黄色片视频免费 | 欧美成人黄 | 狠狠色综合欧美激情 | 久草视频在线免费看 | 国产精品成人av电影 |