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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

uniapp H5 实现地图选址功能

發布時間:2024/3/13 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uniapp H5 实现地图选址功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這段時間因為項目中使用到地圖選址,由于第一次在uniapp中使用地圖選址功能,全部都是網上查找相關資料,遇到很多坑,后面自己從新利用map組件寫了一個,下面方法列出來,uniapp騰訊地圖key申請與部署就不寫了,自行百度,僅供參考

方法一

騰訊地圖官網地圖官網地圖選址組件?地圖組件 | 騰訊位置服務

優點:使用簡單,代碼簡潔

缺點:定位不準,如果通過uni.getLocation獲取定位經緯度傳入,組件自帶一個箭頭點擊回到我的位置,我的位置會出現空白

<template><div class="map-warp"><!--#ifdef H5--><web-view :src="url"@message="onMessage"></web-view><!--#endif--></div> </template><script>export default {data() {return {height: uni.getSystemInfoSync().screenHeight,url:''}},onLoad(option) {if(option){this.url=`https://apis.map.qq.com/tools/locpicker?search=1&type=1&coord=${option.lat},${option.lon}&policy=1&key=HTLBZ-AFZC3-IC435-YTBCH-PJTQQ-RRF7V&referer=myapp`}},onReady() {const self = this//#ifdef H5if (window.isListen) {// 防止多次注冊addEventListener事件return}window.addEventListener('message', function (event) {var loc = event.data;if (loc && loc.module == 'locationPicker') {console.log('location', loc);self.getPositon(loc, self)};window.isListen = truewindow.removeEventListener('message', function() {}, true)}, false)//#endif},methods: {onMessage(res) {console.log('app接收網頁消息:', res.detail.data[0])this.getPositon(res.detail.data[0], this)},getPositon(res, self) {uni.$emit('onAddressChange', res)setTimeout(function() {uni.navigateBack({delta: 1});}, 500)}}, } </script><style scoped lang="scss"> </style>

方法二

自己根據uniapp官網map標簽實現?map | uni-app官網

這里因為項目時間比較敢,沒有實現搜索,后面有時間了補上

小程序JavascriptSDK使用指南 - 微信小程序解決方案 | 騰訊位置服務騰訊位置服務 小程序JS SDK下載鏈接?解壓后,將qqmap-wx-jssdk.min.js放入項目目錄中

小程序JavascriptSDK使用指南 - 微信小程序解決方案 | 騰訊位置服務

因為H5涉及到跨域,所以qqmap-wx-jssdk.min,js需要修改,可直接復制

效果:

?

//引入vue import Vue from "vue" // 下載vue-jsonp引入 這里我是在mian.js引入 import { VueJsonp } from 'vue-jsonp' Vue.use(VueJsonp) //必須實例化 var ve = new Vue() var vm='' /*** 這里是重寫部分*/ var wx = {request(obj){obj.data.output = 'jsonp've.$jsonp(obj.url,obj.data).then(json => {if(json.status == 0){obj.success(json)}else {obj.fail(json)}}).catch(err => {obj.fail(err)})} }var ERROR_CONF = {KEY_ERR: 311,KEY_ERR_MSG: 'key格式錯誤',PARAM_ERR: 310,PARAM_ERR_MSG: '請求參數信息有誤',SYSTEM_ERR: 600,SYSTEM_ERR_MSG: '系統錯誤',WX_ERR_CODE: 1000,WX_OK_CODE: 200 }; var BASE_URL = 'https://apis.map.qq.com/ws/'; var URL_SEARCH = BASE_URL + 'place/v1/search'; var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion'; var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/'; var URL_CITY_LIST = BASE_URL + 'district/v1/list'; var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren'; var URL_DISTANCE = BASE_URL + 'distance/v1/'; var URL_DIRECTION = BASE_URL + 'direction/v1/'; var MODE = {driving: 'driving',transit: 'transit' }; var EARTH_RADIUS = 6378136.49; var Utils = {/*** md5加密方法* 版權所有?2011 Sebastian Tschan,https://blueimp.net*/safeAdd(x, y) {var lsw = (x & 0xffff) + (y & 0xffff);var msw = (x >> 16) + (y >> 16) + (lsw >> 16);return (msw << 16) | (lsw & 0xffff);},bitRotateLeft(num, cnt) {return (num << cnt) | (num >>> (32 - cnt));},md5cmn(q, a, b, x, s, t) {return this.safeAdd(this.bitRotateLeft(this.safeAdd(this.safeAdd(a, q), this.safeAdd(x, t)), s), b);},md5ff(a, b, c, d, x, s, t) {return this.md5cmn((b & c) | (~b & d), a, b, x, s, t);},md5gg(a, b, c, d, x, s, t) {return this.md5cmn((b & d) | (c & ~d), a, b, x, s, t);},md5hh(a, b, c, d, x, s, t) {return this.md5cmn(b ^ c ^ d, a, b, x, s, t);},md5ii(a, b, c, d, x, s, t) {return this.md5cmn(c ^ (b | ~d), a, b, x, s, t);},binlMD5(x, len) {/* append padding */x[len >> 5] |= 0x80 << (len % 32);x[((len + 64) >>> 9 << 4) + 14] = len;var i;var olda;var oldb;var oldc;var oldd;var a = 1732584193;var b = -271733879;var c = -1732584194;var d = 271733878;for (i = 0; i < x.length; i += 16) {olda = a;oldb = b;oldc = c;oldd = d;a = this.md5ff(a, b, c, d, x[i], 7, -680876936);d = this.md5ff(d, a, b, c, x[i + 1], 12, -389564586);c = this.md5ff(c, d, a, b, x[i + 2], 17, 606105819);b = this.md5ff(b, c, d, a, x[i + 3], 22, -1044525330);a = this.md5ff(a, b, c, d, x[i + 4], 7, -176418897);d = this.md5ff(d, a, b, c, x[i + 5], 12, 1200080426);c = this.md5ff(c, d, a, b, x[i + 6], 17, -1473231341);b = this.md5ff(b, c, d, a, x[i + 7], 22, -45705983);a = this.md5ff(a, b, c, d, x[i + 8], 7, 1770035416);d = this.md5ff(d, a, b, c, x[i + 9], 12, -1958414417);c = this.md5ff(c, d, a, b, x[i + 10], 17, -42063);b = this.md5ff(b, c, d, a, x[i + 11], 22, -1990404162);a = this.md5ff(a, b, c, d, x[i + 12], 7, 1804603682);d = this.md5ff(d, a, b, c, x[i + 13], 12, -40341101);c = this.md5ff(c, d, a, b, x[i + 14], 17, -1502002290);b = this.md5ff(b, c, d, a, x[i + 15], 22, 1236535329);a = this.md5gg(a, b, c, d, x[i + 1], 5, -165796510);d = this.md5gg(d, a, b, c, x[i + 6], 9, -1069501632);c = this.md5gg(c, d, a, b, x[i + 11], 14, 643717713);b = this.md5gg(b, c, d, a, x[i], 20, -373897302);a = this.md5gg(a, b, c, d, x[i + 5], 5, -701558691);d = this.md5gg(d, a, b, c, x[i + 10], 9, 38016083);c = this.md5gg(c, d, a, b, x[i + 15], 14, -660478335);b = this.md5gg(b, c, d, a, x[i + 4], 20, -405537848);a = this.md5gg(a, b, c, d, x[i + 9], 5, 568446438);d = this.md5gg(d, a, b, c, x[i + 14], 9, -1019803690);c = this.md5gg(c, d, a, b, x[i + 3], 14, -187363961);b = this.md5gg(b, c, d, a, x[i + 8], 20, 1163531501);a = this.md5gg(a, b, c, d, x[i + 13], 5, -1444681467);d = this.md5gg(d, a, b, c, x[i + 2], 9, -51403784);c = this.md5gg(c, d, a, b, x[i + 7], 14, 1735328473);b = this.md5gg(b, c, d, a, x[i + 12], 20, -1926607734);a = this.md5hh(a, b, c, d, x[i + 5], 4, -378558);d = this.md5hh(d, a, b, c, x[i + 8], 11, -2022574463);c = this.md5hh(c, d, a, b, x[i + 11], 16, 1839030562);b = this.md5hh(b, c, d, a, x[i + 14], 23, -35309556);a = this.md5hh(a, b, c, d, x[i + 1], 4, -1530992060);d = this.md5hh(d, a, b, c, x[i + 4], 11, 1272893353);c = this.md5hh(c, d, a, b, x[i + 7], 16, -155497632);b = this.md5hh(b, c, d, a, x[i + 10], 23, -1094730640);a = this.md5hh(a, b, c, d, x[i + 13], 4, 681279174);d = this.md5hh(d, a, b, c, x[i], 11, -358537222);c = this.md5hh(c, d, a, b, x[i + 3], 16, -722521979);b = this.md5hh(b, c, d, a, x[i + 6], 23, 76029189);a = this.md5hh(a, b, c, d, x[i + 9], 4, -640364487);d = this.md5hh(d, a, b, c, x[i + 12], 11, -421815835);c = this.md5hh(c, d, a, b, x[i + 15], 16, 530742520);b = this.md5hh(b, c, d, a, x[i + 2], 23, -995338651);a = this.md5ii(a, b, c, d, x[i], 6, -198630844);d = this.md5ii(d, a, b, c, x[i + 7], 10, 1126891415);c = this.md5ii(c, d, a, b, x[i + 14], 15, -1416354905);b = this.md5ii(b, c, d, a, x[i + 5], 21, -57434055);a = this.md5ii(a, b, c, d, x[i + 12], 6, 1700485571);d = this.md5ii(d, a, b, c, x[i + 3], 10, -1894986606);c = this.md5ii(c, d, a, b, x[i + 10], 15, -1051523);b = this.md5ii(b, c, d, a, x[i + 1], 21, -2054922799);a = this.md5ii(a, b, c, d, x[i + 8], 6, 1873313359);d = this.md5ii(d, a, b, c, x[i + 15], 10, -30611744);c = this.md5ii(c, d, a, b, x[i + 6], 15, -1560198380);b = this.md5ii(b, c, d, a, x[i + 13], 21, 1309151649);a = this.md5ii(a, b, c, d, x[i + 4], 6, -145523070);d = this.md5ii(d, a, b, c, x[i + 11], 10, -1120210379);c = this.md5ii(c, d, a, b, x[i + 2], 15, 718787259);b = this.md5ii(b, c, d, a, x[i + 9], 21, -343485551);a = this.safeAdd(a, olda);b = this.safeAdd(b, oldb);c = this.safeAdd(c, oldc);d = this.safeAdd(d, oldd);}return [a, b, c, d];},binl2rstr(input) {var i;var output = '';var length32 = input.length * 32;for (i = 0; i < length32; i += 8) {output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff);}return output;},rstr2binl(input) {var i;var output = [];output[(input.length >> 2) - 1] = undefined;for (i = 0; i < output.length; i += 1) {output[i] = 0;}var length8 = input.length * 8;for (i = 0; i < length8; i += 8) {output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32);}return output;},rstrMD5(s) {return this.binl2rstr(this.binlMD5(this.rstr2binl(s), s.length * 8));},rstrHMACMD5(key, data) {var i;var bkey = this.rstr2binl(key);var ipad = [];var opad = [];var hash;ipad[15] = opad[15] = undefined;if (bkey.length > 16) {bkey = this.binlMD5(bkey, key.length * 8);}for (i = 0; i < 16; i += 1) {ipad[i] = bkey[i] ^ 0x36363636;opad[i] = bkey[i] ^ 0x5c5c5c5c;}hash = this.binlMD5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8);return this.binl2rstr(this.binlMD5(opad.concat(hash), 512 + 128));},rstr2hex(input) {var hexTab = '0123456789abcdef';var output = '';var x;var i;for (i = 0; i < input.length; i += 1) {x = input.charCodeAt(i);output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f);}return output;},str2rstrUTF8(input) {return unescape(encodeURIComponent(input));},rawMD5(s) {return this.rstrMD5(this.str2rstrUTF8(s));},hexMD5(s) {return this.rstr2hex(this.rawMD5(s));},rawHMACMD5(k, d) {return this.rstrHMACMD5(this.str2rstrUTF8(k), str2rstrUTF8(d));},hexHMACMD5(k, d) {return this.rstr2hex(this.rawHMACMD5(k, d));},md5(string, key, raw) {if (!key) {if (!raw) {return this.hexMD5(string);}return this.rawMD5(string);}if (!raw) {return this.hexHMACMD5(key, string);}return this.rawHMACMD5(key, string);},/*** 得到md5加密后的sig參數* @param {Object} requestParam 接口參數* @param {String} sk簽名字符串* @param {String} featrue 方法名* @return 返回加密后的sig參數*/getSig(requestParam, sk, feature, mode) {var sig = null;var requestArr = [];Object.keys(requestParam).sort().forEach(function(key){requestArr.push(key + '=' + requestParam[key]);});if (feature == 'search') {sig = '/ws/place/v1/search?' + requestArr.join('&') + sk;}if (feature == 'suggest') {sig = '/ws/place/v1/suggestion?' + requestArr.join('&') + sk;}if (feature == 'reverseGeocoder') {sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk;}if (feature == 'geocoder') {sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk;}if (feature == 'getCityList') {sig = '/ws/district/v1/list?' + requestArr.join('&') + sk;}if (feature == 'getDistrictByCityId') {sig = '/ws/district/v1/getchildren?' + requestArr.join('&') + sk;}if (feature == 'calculateDistance') {sig = '/ws/distance/v1/?' + requestArr.join('&') + sk;}if (feature == 'direction') {sig = '/ws/direction/v1/' + mode + '?' + requestArr.join('&') + sk;}sig = this.md5(sig);return sig;},/*** 得到終點query字符串* @param {Array|String} 檢索數據*/location2query(data) {if (typeof data == 'string') {return data;}var query = '';for (var i = 0; i < data.length; i++) {var d = data[i];if (!!query) {query += ';';}if (d.location) {query = query + d.location.lat + ',' + d.location.lng;}if (d.latitude && d.longitude) {query = query + d.latitude + ',' + d.longitude;}}return query;},/*** 計算角度*/rad(d) {return d * Math.PI / 180.0;}, /*** 處理終點location數組* @return 返回終點數組*/getEndLocation(location){var to = location.split(';');var endLocation = [];for (var i = 0; i < to.length; i++) {endLocation.push({lat: parseFloat(to[i].split(',')[0]),lng: parseFloat(to[i].split(',')[1])})}return endLocation;},/*** 計算兩點間直線距離* @param a 表示緯度差* @param b 表示經度差* @return 返回的是距離,單位m*/getDistance(latFrom, lngFrom, latTo, lngTo) {var radLatFrom = this.rad(latFrom);var radLatTo = this.rad(latTo);var a = radLatFrom - radLatTo;var b = this.rad(lngFrom) - this.rad(lngTo);var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2)));distance = distance * EARTH_RADIUS;distance = Math.round(distance * 10000) / 10000;return parseFloat(distance.toFixed(0));},/*** 使用微信接口進行定位*/getWXLocation(success, fail, complete) {wx.getLocation({type: 'gcj02',success: success,fail: fail,complete: complete});},/*** 獲取location參數*/getLocationParam(location) {if (typeof location == 'string') {var locationArr = location.split(',');if (locationArr.length === 2) {location = {latitude: location.split(',')[0],longitude: location.split(',')[1]};} else {location = {};}}return location;},/*** 回調函數默認處理*/polyfillParam(param) {param.success = param.success || function () { };param.fail = param.fail || function () { };param.complete = param.complete || function () { };},/*** 驗證param對應的key值是否為空* * @param {Object} param 接口參數* @param {String} key 對應參數的key*/checkParamKeyEmpty(param, key) {if (!param[key]) {var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'參數格式有誤');param.fail(errconf);param.complete(errconf);return true;}return false;},/*** 驗證參數中是否存在檢索詞keyword* * @param {Object} param 接口參數*/checkKeyword(param){return !this.checkParamKeyEmpty(param, 'keyword');},/*** 驗證location值* * @param {Object} param 接口參數*/checkLocation(param) {var location = this.getLocationParam(param.location);if (!location || !location.latitude || !location.longitude) {var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location參數格式有誤');param.fail(errconf);param.complete(errconf);return false;}return true;},/*** 構造錯誤數據結構* @param {Number} errCode 錯誤碼* @param {Number} errMsg 錯誤描述*/buildErrorConfig(errCode, errMsg) {return {status: errCode,message: errMsg};},/*** * 數據處理函數* 根據傳入參數不同處理不同數據* @param {String} feature 功能名稱* search 地點搜索* suggest關鍵詞提示* reverseGeocoder逆地址解析* geocoder地址解析* getCityList獲取城市列表:父集* getDistrictByCityId獲取區縣列表:子集* calculateDistance距離計算* @param {Object} param 接口參數* @param {Object} data 數據*/handleData(param,data,feature){if (feature == 'search') {var searchResult = data.data;var searchSimplify = [];for (var i = 0; i < searchResult.length; i++) {searchSimplify.push({id: searchResult[i].id || null,title: searchResult[i].title || null,latitude: searchResult[i].location && searchResult[i].location.lat || null,longitude: searchResult[i].location && searchResult[i].location.lng || null,address: searchResult[i].address || null,category: searchResult[i].category || null,tel: searchResult[i].tel || null,adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null,city: searchResult[i].ad_info && searchResult[i].ad_info.city || null,district: searchResult[i].ad_info && searchResult[i].ad_info.district || null,province: searchResult[i].ad_info && searchResult[i].ad_info.province || null})}param.success(data, {searchResult: searchResult,searchSimplify: searchSimplify})} else if (feature == 'suggest') {var suggestResult = data.data;var suggestSimplify = [];for (var i = 0; i < suggestResult.length; i++) {suggestSimplify.push({adcode: suggestResult[i].adcode || null,address: suggestResult[i].address || null,category: suggestResult[i].category || null,city: suggestResult[i].city || null,district: suggestResult[i].district || null,id: suggestResult[i].id || null,latitude: suggestResult[i].location && suggestResult[i].location.lat || null,longitude: suggestResult[i].location && suggestResult[i].location.lng || null,province: suggestResult[i].province || null,title: suggestResult[i].title || null,type: suggestResult[i].type || null})}param.success(data, {suggestResult: suggestResult,suggestSimplify: suggestSimplify})} else if (feature == 'reverseGeocoder') {var reverseGeocoderResult = data.result;var reverseGeocoderSimplify = {address: reverseGeocoderResult.address || null,latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null,longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null,adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null,city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null,district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null,nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null,province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null,street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null,street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null,recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null,rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null};if (reverseGeocoderResult.pois) {//判斷是否返回周邊poivar pois = reverseGeocoderResult.pois;var poisSimplify = [];for (var i = 0;i < pois.length;i++) {poisSimplify.push({id: pois[i].id || null,title: pois[i].title || null,latitude: pois[i].location && pois[i].location.lat || null,longitude: pois[i].location && pois[i].location.lng || null,address: pois[i].address || null,category: pois[i].category || null,adcode: pois[i].ad_info && pois[i].ad_info.adcode || null,city: pois[i].ad_info && pois[i].ad_info.city || null,district: pois[i].ad_info && pois[i].ad_info.district || null,province: pois[i].ad_info && pois[i].ad_info.province || null})}param.success(data,{reverseGeocoderResult: reverseGeocoderResult,reverseGeocoderSimplify: reverseGeocoderSimplify,pois: pois,poisSimplify: poisSimplify})} else {param.success(data, {reverseGeocoderResult: reverseGeocoderResult,reverseGeocoderSimplify: reverseGeocoderSimplify})}} else if (feature == 'geocoder') {var geocoderResult = data.result;var geocoderSimplify = {title: geocoderResult.title || null,latitude: geocoderResult.location && geocoderResult.location.lat || null,longitude: geocoderResult.location && geocoderResult.location.lng || null,adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null,province: geocoderResult.address_components && geocoderResult.address_components.province || null,city: geocoderResult.address_components && geocoderResult.address_components.city || null,district: geocoderResult.address_components && geocoderResult.address_components.district || null,street: geocoderResult.address_components && geocoderResult.address_components.street || null,street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null,level: geocoderResult.level || null};param.success(data,{geocoderResult: geocoderResult,geocoderSimplify: geocoderSimplify});} else if (feature == 'getCityList') {var provinceResult = data.result[0];var cityResult = data.result[1];var districtResult = data.result[2];param.success(data,{provinceResult: provinceResult,cityResult: cityResult,districtResult: districtResult});} else if (feature == 'getDistrictByCityId') {var districtByCity = data.result[0];param.success(data, districtByCity);} else if (feature == 'calculateDistance') {var calculateDistanceResult = data.result.elements; var distance = [];for (var i = 0; i < calculateDistanceResult.length; i++){distance.push(calculateDistanceResult[i].distance);} param.success(data, {calculateDistanceResult: calculateDistanceResult,distance: distance});} else if (feature == 'direction') {var direction = data.result.routes;param.success(data,direction);} else {param.success(data);}},/*** 構造微信請求參數,公共屬性處理* * @param {Object} param 接口參數* @param {Object} param 配置項* @param {String} feature 方法名*/buildWxRequestConfig(param, options, feature) {var that = this;options.header = { "content-type": "application/json" };options.method = 'GET';options.success = function (res) {var data = res;if (data.status === 0) {that.handleData(param, data, feature);} else {param.fail(data);}};options.fail = function (res) {res.statusCode = ERROR_CONF.WX_ERR_CODE;param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));};options.complete = function (res) {var statusCode = +res.statusCode;switch(statusCode) {case ERROR_CONF.WX_ERR_CODE: {param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));break;}case ERROR_CONF.WX_OK_CODE: {var data = res.data;if (data.status === 0) {param.complete(data);} else {param.complete(that.buildErrorConfig(data.status, data.message));}break;}default:{param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG));}}};return options;},/*** 處理用戶參數是否傳入坐標進行不同的處理*/locationProcess(param, locationsuccess, locationfail, locationcomplete) {var that = this;locationfail = locationfail || function (res) {res.statusCode = ERROR_CONF.WX_ERR_CODE;param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));};locationcomplete = locationcomplete || function (res) {if (res.statusCode == ERROR_CONF.WX_ERR_CODE) {param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg));}};if (!param.location) {that.getWXLocation(locationsuccess, locationfail, locationcomplete);} else if (that.checkLocation(param)) {var location = Utils.getLocationParam(param.location);locationsuccess(location);}} };class QQMapWX {/*** 構造函數* * @param {Object} options 接口參數,key 為必選參數*/constructor(options) {if (!options.key) {throw Error('key值不能為空');}vm = options.vmthis.key = options.key;};/*** POI周邊檢索** @param {Object} options 接口參數對象* * 參數對象結構可以參考* @see http://lbs.qq.com/webservice_v1/guide-search.html*/search(options) {var that = this;options = options || {};Utils.polyfillParam(options);if (!Utils.checkKeyword(options)) {return;}var requestParam = {keyword: options.keyword,orderby: options.orderby || '_distance',page_size: options.page_size || 10,page_index: options.page_index || 1,output: 'json',key: that.key};if (options.address_format) {requestParam.address_format = options.address_format;}if (options.filter) {requestParam.filter = options.filter;}var distance = options.distance || "1000";var auto_extend = options.auto_extend || 1;var region = null;var rectangle = null;//判斷城市限定參數if (options.region) {region = options.region;}//矩形限定坐標(暫時只支持字符串格式)if (options.rectangle) {rectangle = options.rectangle;}var locationsuccess = function (result) { if (region && !rectangle) {//城市限定參數拼接requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")";if (options.sig) {requestParam.sig = Utils.getSig(requestParam, options.sig, 'search');}} else if (rectangle && !region) {//矩形搜索requestParam.boundary = "rectangle(" + rectangle + ")";if (options.sig) {requestParam.sig = Utils.getSig(requestParam, options.sig, 'search');}} else {requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")";if (options.sig) {requestParam.sig = Utils.getSig(requestParam, options.sig, 'search');}} wx.request(Utils.buildWxRequestConfig(options, {url: URL_SEARCH,data: requestParam}, 'search'));};Utils.locationProcess(options, locationsuccess);};/*** sug模糊檢索** @param {Object} options 接口參數對象* * 參數對象結構可以參考* http://lbs.qq.com/webservice_v1/guide-suggestion.html*/getSuggestion(options) {var that = this;options = options || {};Utils.polyfillParam(options);if (!Utils.checkKeyword(options)) {return;}var requestParam = {keyword: options.keyword,region: options.region || '全國',region_fix: options.region_fix || 0,policy: options.policy || 0,page_size: options.page_size || 10,//控制顯示條數page_index: options.page_index || 1,//控制頁數get_subpois : options.get_subpois || 0,//返回子地點output: 'json',key: that.key};//長地址if (options.address_format) {requestParam.address_format = options.address_format;}//過濾if (options.filter) {requestParam.filter = options.filter;}//排序if (options.location) {var locationsuccess = function (result) {requestParam.location = result.latitude + ',' + result.longitude;if (options.sig) {requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest');}wx.request(Utils.buildWxRequestConfig(options, {url: URL_SUGGESTION,data: requestParam}, "suggest")); };Utils.locationProcess(options, locationsuccess);} else {if (options.sig) {requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest');}wx.request(Utils.buildWxRequestConfig(options, {url: URL_SUGGESTION,data: requestParam}, "suggest")); } };/*** 逆地址解析** @param {Object} options 接口參數對象* * 請求參數結構可以參考* http://lbs.qq.com/webservice_v1/guide-gcoder.html*/reverseGeocoder(options) {var that = this;options = options || {};Utils.polyfillParam(options);var requestParam = {coord_type: options.coord_type || 5,get_poi: options.get_poi || 0,output: 'json',key: that.key};if (options.poi_options) {requestParam.poi_options = options.poi_options}var locationsuccess = function (result) {requestParam.location = result.latitude + ',' + result.longitude;if (options.sig) {requestParam.sig = Utils.getSig(requestParam, options.sig, 'reverseGeocoder');}wx.request(Utils.buildWxRequestConfig(options, {url: URL_GET_GEOCODER,data: requestParam}, 'reverseGeocoder'));};Utils.locationProcess(options, locationsuccess);};/*** 地址解析** @param {Object} options 接口參數對象* * 請求參數結構可以參考* http://lbs.qq.com/webservice_v1/guide-geocoder.html*/geocoder(options) {var that = this;options = options || {};Utils.polyfillParam(options);if (Utils.checkParamKeyEmpty(options, 'address')) {return;}var requestParam = {address: options.address,output: 'json',key: that.key};//城市限定if (options.region) {requestParam.region = options.region;}if (options.sig) {requestParam.sig = Utils.getSig(requestParam, options.sig, 'geocoder');}wx.request(Utils.buildWxRequestConfig(options, {url: URL_GET_GEOCODER,data: requestParam},'geocoder'));};/*** 獲取城市列表** @param {Object} options 接口參數對象* * 請求參數結構可以參考* http://lbs.qq.com/webservice_v1/guide-region.html*/getCityList(options) {var that = this;options = options || {};Utils.polyfillParam(options);var requestParam = {output: 'json',key: that.key};if (options.sig) {requestParam.sig = Utils.getSig(requestParam, options.sig, 'getCityList');}wx.request(Utils.buildWxRequestConfig(options, {url: URL_CITY_LIST,data: requestParam},'getCityList'));};/*** 獲取對應城市ID的區縣列表** @param {Object} options 接口參數對象* * 請求參數結構可以參考* http://lbs.qq.com/webservice_v1/guide-region.html*/getDistrictByCityId(options) {var that = this;options = options || {};Utils.polyfillParam(options);if (Utils.checkParamKeyEmpty(options, 'id')) {return;}var requestParam = {id: options.id || '',output: 'json',key: that.key};if (options.sig) {requestParam.sig = Utils.getSig(requestParam, options.sig, 'getDistrictByCityId');}wx.request(Utils.buildWxRequestConfig(options, {url: URL_AREA_LIST,data: requestParam},'getDistrictByCityId'));};/*** 用于單起點到多終點的路線距離(非直線距離)計算:* 支持兩種距離計算方式:步行和駕車。* 起點到終點最大限制直線距離10公里。** 新增直線距離計算。* * @param {Object} options 接口參數對象* * 請求參數結構可以參考* http://lbs.qq.com/webservice_v1/guide-distance.html*/calculateDistance(options) {var that = this;options = options || {};Utils.polyfillParam(options);if (Utils.checkParamKeyEmpty(options, 'to')) {return;}var requestParam = {mode: options.mode || 'walking',to: Utils.location2query(options.to),output: 'json',key: that.key};if (options.from) {options.location = options.from;}//計算直線距離if(requestParam.mode == 'straight'){ var locationsuccess = function (result) {var locationTo = Utils.getEndLocation(requestParam.to);//處理終點坐標var data = {message:"query ok",result:{elements:[]},status:0};for (var i = 0; i < locationTo.length; i++) {data.result.elements.push({//將坐標存入distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng),duration:0,from:{lat: result.latitude,lng:result.longitude},to:{lat: locationTo[i].lat,lng: locationTo[i].lng}}); }var calculateResult = data.result.elements;var distanceResult = [];for (var i = 0; i < calculateResult.length; i++) {distanceResult.push(calculateResult[i].distance);} return options.success(data,{calculateResult: calculateResult,distanceResult: distanceResult});};Utils.locationProcess(options, locationsuccess);} else {var locationsuccess = function (result) {requestParam.from = result.latitude + ',' + result.longitude;if (options.sig) {requestParam.sig = Utils.getSig(requestParam, options.sig, 'calculateDistance');}wx.request(Utils.buildWxRequestConfig(options, {url: URL_DISTANCE,data: requestParam},'calculateDistance'));};Utils.locationProcess(options, locationsuccess);} };/*** 路線規劃:* * @param {Object} options 接口參數對象* * 請求參數結構可以參考* https://lbs.qq.com/webservice_v1/guide-road.html*/direction(options) {var that = this;options = options || {};Utils.polyfillParam(options);if (Utils.checkParamKeyEmpty(options, 'to')) {return;}var requestParam = {output: 'json',key: that.key};//to格式處理if (typeof options.to == 'string') {requestParam.to = options.to;} else {requestParam.to = options.to.latitude + ',' + options.to.longitude;}//初始化局部請求域名var SET_URL_DIRECTION = null;//設置默認mode屬性options.mode = options.mode || MODE.driving;//設置請求域名SET_URL_DIRECTION = URL_DIRECTION + options.mode;if (options.from) {options.location = options.from;}if (options.mode == MODE.driving) {if (options.from_poi) {requestParam.from_poi = options.from_poi;}if (options.heading) {requestParam.heading = options.heading;}if (options.speed) {requestParam.speed = options.speed;}if (options.accuracy) {requestParam.accuracy = options.accuracy;}if (options.road_type) {requestParam.road_type = options.road_type;}if (options.to_poi) {requestParam.to_poi = options.to_poi;}if (options.from_track) {requestParam.from_track = options.from_track;}if (options.waypoints) {requestParam.waypoints = options.waypoints;}if (options.policy) {requestParam.policy = options.policy;}if (options.plate_number) {requestParam.plate_number = options.plate_number;}}if (options.mode == MODE.transit) {if (options.departure_time) {requestParam.departure_time = options.departure_time;}if (options.policy) {requestParam.policy = options.policy;}} var locationsuccess = function (result) {requestParam.from = result.latitude + ',' + result.longitude;if (options.sig) {requestParam.sig = Utils.getSig(requestParam, options.sig, 'direction',options.mode);}wx.request(Utils.buildWxRequestConfig(options, {url: SET_URL_DIRECTION,data: requestParam}, 'direction'));};Utils.locationProcess(options, locationsuccess);} };module.exports = QQMapWX;

map.vue

<template><view class="map-box"><map id="maps" class="tui-maps" :longitude="longitude" :latitude="latitude" :scale="16" show-location@regionchange="regionchange" :style="{'width':windowWidth+'px','height':'300px'}"><cover-image class="cover-image" src="./location.png" /><cover-view class="tip">您可以拖動地圖,標記當前精準位置</cover-view></map><view class="gps-body" v-if="poiss.length > 0"><scroll-view scroll-y="true" :scroll-top="scrollTop" scroll-with-animation="true"style="height:720rpx;"><block v-for="(item,index) in poiss" :key="item.id"><view class="gps-lists"><text class="gps-title">{{item.title}}</text><view class="gps-flex"><view class="gps-view">{{item.address}}</view><view style="margin-top:-18rpx;"><radio-group @change="radioChange(item,index)"><radio :checked="index === current" /></radio-group></view></view></view></block></scroll-view><view class="but"><button type="primary"@click="handleConfirm">確認位置</button></view></view></view> </template><script>const QQMapWX = require('./qqmap-wx-jssdk.min.js')const qqmapsdk = new QQMapWX({key: '申請的key'})export default {data() {return {longitude: null,latitude: null,windowWidth: 0,poiss: [],scrollTop: 0,current: 0,address:{},mapContext: null,}},//第一次初始化用戶位置信息onLoad() {try {var th_is = this;th_is.mapContext = uni.createMapContext('maps')const res = uni.getSystemInfoSync();th_is.windowWidth = res.windowWidth;uni.showLoading({title: '正在獲取定位中',});uni.getLocation({type: 'gcj02',isHighAccuracy: 'true',geocode:'true',success: (res) => {th_is.longitude = res.longitude;th_is.latitude = res.latitude;uni.hideLoading();th_is.getAddress(th_is.latitude, th_is.longitude);}})} catch (e) {// error}},methods: {//每移動一次獲取周圍地址regionchange(e) {var th_is = this;if (e.type == "end") {th_is.longitude = e.detail.centerLocation.longitude;th_is.latitude = e.detail.centerLocation.latitude;th_is.getAddress(th_is.latitude, th_is.longitude);} },//獲取附近位置信息getAddress(longitude, latitude) {let location = [longitude, latitude]let StringLocation = location.toString();var th_is = this;qqmapsdk.reverseGeocoder({location: StringLocation,get_poi: 1,poi_options: 'policy=1;page_size=20;page_index=1',success: res => {th_is.poiss = res.result.pois;th_is.address=res.result.pois.length>0?res.result.pois[0]:{}},fail: err => {uni.showToast({title: err.message,icon: 'none',duration: 3000})}})},radioChange(item, evt) {this.current = evt;this.mapContext.moveToLocation({latitude: item.location.lat,longitude: item.location.lng})this.address = Object.assign(item);// console.log(item);},//確認位置handleConfirm(){uni.$emit('onAddressChange', this.address)setTimeout(function() {uni.navigateBack({delta: 1});}, 500)}}} </script><style scoped lang="scss">.map-box{padding-bottom: constant(safe-area-inset-bottom); // 底部安全區padding-bottom: env(safe-area-inset-bottom); // 底部安全區box-sizing: content-box;}.tui-maps{width: 100%;height: 600rpx;// position: relative;}.cover-image {width: 62rpx;height: 62rpx;position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);}.tip {font-size: 20rpx;color: #b6b6b6;line-height: 42rpx;padding: 0 20rpx;position: absolute;left: 50%;bottom: 30rpx;box-shadow: 0px 1px 10px 1px rgba(153, 153, 153, 0.34);background-color: #fff;border-radius: 4px;transform: translateX(-50%);}.gps-body {width: 100%;padding-top: 20rpx;// padding-bottom: 32rpx;// box-sizing: border-box;background-color: #FFFFFF;// position: absolute;// top: 600rpx;// bottom: 0;font-size: 26rpx;.gps-lists {width: 98%;height: 100rpx;margin: 0px auto;border: 1px solid #f9f9f9;.gps-flex {display: flex;justify-content: space-between;}.gps-flex /deep/ .uni-radio-input {width: 40rpx;height: 40rpx;}.gps-title {padding-left: 10rpx;display: block;padding-top: 15rpx;}.gps-view {width: 70%;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;padding-left: 10rpx;color: #b6b6b6;font-size: 25rpx;margin-top: 15rpx;}}}.but{margin-top: 32rpx;padding: 0 32rpx;} </style>

總結

以上是生活随笔為你收集整理的uniapp H5 实现地图选址功能的全部內容,希望文章能夠幫你解決所遇到的問題。

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

精品一区二区三区在线播放 | 五月天激情视频在线观看 | 国产一区二区免费看 | 天天草av | 国产亚洲欧美在线视频 | 伊人天天综合 | 欧美日韩国产一二 | 亚洲免费视频在线观看 | 日韩成年视频 | 99热这里精品 | 国产一级不卡视频 | 天天射天天| 欧美日韩中文国产 | www成人精品 | 国产91精品看黄网站在线观看动漫 | 日日精品| 在线观看黄 | 亚洲区精品视频 | 国产精品欧美 | 久久亚洲综合国产精品99麻豆的功能介绍 | 日韩在线二区 | 91av手机在线 | av资源免费看 | 国产精品永久久久久久久久久 | 一区二三国产 | 日韩一区正在播放 | 91经典在线 | 精品色999 | 亚洲精品视频二区 | www国产精品com | 精品亚洲视频在线观看 | 激情欧美日韩一区二区 | 啪啪激情网| 亚洲精品美女久久17c | 高清国产午夜精品久久久久久 | 麻花天美星空视频 | 久久久久久久网站 | 中文字幕在线视频一区 | 国产高清在线免费观看 | 日韩sese | 国产96在线 | 国产一区二区高清 | 国产精品久久久久久久电影 | 亚洲精品在线观看网站 | 日批视频国产 | 日本精品午夜 | 国产精品初高中精品久久 | 日韩在线观看第一页 | 99 久久久久 | 国产精品视频免费观看 | 免费三级在线 | 成人影片在线播放 | 免费看的黄网站 | 免费观看的黄色片 | 在线视频久 | 亚洲成av人影片在线观看 | av高清一区二区三区 | 伊人丁香| 久久99亚洲精品久久 | 天天天插 | 色噜噜在线观看 | 日韩三级不卡 | av.com在线 | 绯色av一区| 一区二区三区三区在线 | 久久99热这里只有精品国产 | 欧美日韩一区三区 | 91精品秘密在线观看 | 日本字幕网 | 亚洲欧洲精品久久 | 日韩精品极品视频 | 婷婷天天色 | 欧美aaa级片| 免费视频国产 | 69精品视频在线观看 | 国产精品一区二区在线观看免费 | 亚洲欧美日本A∨在线观看 青青河边草观看完整版高清 | 开心激情网五月天 | 日韩欧美91| 日韩欧美在线国产 | 亚洲综合在线一区二区三区 | 国产.精品.日韩.另类.中文.在线.播放 | 天天操天天弄 | 日韩精品视频一二三 | 久久看看 | 国产视频在线观看一区二区 | 成人黄色视 | 欧美日韩国产网站 | 国产福利电影网址 | 欧美一级日韩免费不卡 | 国产精品123| 国产专区欧美专区 | 热精品 | 日日干av | 国产一级性生活 | 一级特黄av | 亚洲国产精品va在线看 | 99中文字幕在线观看 | 欧美俄罗斯性视频 | 精品美女在线视频 | 国产精品久久久久久久久久尿 | 日本夜夜草视频网站 | 欧美一性一交一乱 | 欧美地下肉体性派对 | 开心色插 | 久久99精品久久久久久久久久久久 | 亚洲一区日韩在线 | 成人免费亚洲 | 国产视频在| 国产成人精品999在线观看 | 国产在线观看不卡 | 精品国产成人av | 国产伦理一区二区 | 久久撸在线视频 | 国产成本人视频在线观看 | 91精品免费看 | 国产高清av免费在线观看 | 亚洲精品国产第一综合99久久 | 丁香花在线观看免费完整版视频 | 久久99精品久久久久久久久久久久 | 久久99精品国产99久久 | 亚洲免费激情 | 国产一级片免费视频 | 97视频中文字幕 | 久久久久欧美精品999 | 黄色大全免费网站 | av无限看 | 久久亚洲综合国产精品99麻豆的功能介绍 | 在线有码中文字幕 | 国产高清日韩欧美 | 中文字幕在线播放av | 日韩有码在线播放 | 91人人爽人人爽人人精88v | 99久久超碰中文字幕伊人 | 国产精品99久久久久久久久久久久 | 午夜久久网 | 日韩在线观看视频免费 | 欧美激情精品 | 中文字幕一区二区三区四区久久 | 国产亚洲精品综合一区91 | 日韩一级黄色av | 91人人爽久久涩噜噜噜 | 99爱视频在线观看 | 成人免费在线电影 | 国产精品一区二区三区免费视频 | 2023天天干 | 久久精品日产第一区二区三区乱码 | 欧美日韩久久久 | 国产免费不卡 | 91黄色在线视频 | 视频成人免费 | 成人免费一区二区三区在线观看 | 久草在线播放视频 | 国产第一页精品 | 青青草国产精品 | 免费看色的网站 | 国产精品一区二区在线观看免费 | 东方av在线免费观看 | 美女性爽视频国产免费app | 美女网站在线观看 | 91成人在线免费观看 | 亚洲成av| 在线亚洲免费视频 | 91九色pron| 一区二区网| 黄网站a| 午夜精品一区二区三区在线播放 | 天天曰夜夜操 | 色综合天天综合网国产成人网 | 国产精品国产亚洲精品看不卡 | 国产成人精品一区二区在线观看 | 国产精品激情在线观看 | 肉色欧美久久久久久久免费看 | 91久久精品一区二区三区 | 亚洲第二色 | 8x成人在线| 欧美日韩中文在线视频 | 日本精品视频在线播放 | 久久五月天婷婷 | 91香蕉视频在线下载 | 亚洲成人动漫在线观看 | 色搞搞 | 色av婷婷| 国产人成在线观看 | 激情婷婷六月 | 亚洲午夜精品一区二区三区电影院 | 免费在线看成人av | 久草在线视频免赞 | 在线免费高清视频 | 欧美一区二区三区在线视频观看 | 国产午夜精品一区二区三区四区 | 国产一区二区在线视频观看 | 久久精品免费播放 | 五月天综合色 | 久久久久久福利 | 久久免费视频在线 | 91日韩在线| av在线等| 91人网站| 国产九色在线播放九色 | 一区二区理论片 | 99热国产在线中文 | 久久久久久综合 | 国产精品观看在线亚洲人成网 | 亚洲色图激情文学 | 久久99精品久久久久久久久久久久 | 精品在线观看免费 | 激情电影影院 | 日躁夜躁狠狠躁2001 | 天天色天天操综合网 | 三级a视频 | 精品亚洲欧美一区 | 国产精品成人久久久久久久 | 免费视频久久久久 | 手机在线视频福利 | 五月婷婷视频在线 | 久久久久久久久精 | 国产精品成人在线观看 | www.狠狠插.com | 久草免费电影 | 久久久久亚洲国产 | 欧美一级性生活视频 | 久久电影色 | 国产精品久久久久久久久久久久午夜 | av免费网站观看 | 亚洲九九| 亚洲欧美日韩一区二区三区在线观看 | 狠狠的干 | 亚洲激情综合 | 亚洲免费观看在线视频 | 五月婷婷一区二区三区 | 最近能播放的中文字幕 | 在线观看视频你懂 | 黄色软件在线观看 | 国产一区二区电影在线观看 | 四虎在线观看精品视频 | 欧美日韩国产一二三区 | 免费在线成人 | 亚洲激情在线视频 | 91完整版在线观看 | 91精品久久久久久久久久入口 | 日本视频网 | 又粗又长又大又爽又黄少妇毛片 | 天堂在线一区二区三区 | 日韩免费三区 | 国产精品 999 | 婷婷六月天综合 | 亚洲成av人片 | 91传媒在线| 91aaa在线观看 | 亚洲性xxxx| 欧美日韩一区二区三区在线免费观看 | 911久久 | 欧美日韩视频一区二区 | 久久久久久高清 | 久久久综合色 | 黄色成人av| 日韩免费一区二区在线观看 | 在线一区观看 | 2021久久| 九九热精品在线 | 色综合人人 | 亚洲精品国产综合99久久夜夜嗨 | 91视频国产免费 | 91视频在线自拍 | 日批视频在线播放 | 欧美少妇xxx| 久久婷婷久久 | 黄色软件在线观看视频 | 久久综合九色欧美综合狠狠 | 在线免费av播放 | 热久久免费视频 | 欧美精品生活片 | 成人在线免费小视频 | 日本性生活免费看 | 日韩有码第一页 | 在线免费av播放 | 这里只有精品视频在线观看 | 色婷婷 亚洲 | 久久国产欧美日韩精品 | 一区二区精品在线观看 | 五月婷婷激情 | 四虎海外影库www4hu | 欧美日韩首页 | 狠狠操狠狠干天天操 | 狠狠躁夜夜躁人人爽超碰91 | 国产一二区视频 | 国产我不卡 | 亚洲三级国产 | 久久国产视频网站 | 超碰97人人干 | 日韩电影中文字幕在线 | 4438全国亚洲精品在线观看视频 | 久草视频免费在线观看 | 日韩精品欧美专区 | 欧美国产一区二区 | 亚洲精品视频大全 | 久久观看免费视频 | 欧亚日韩精品一区二区在线 | 久久综合中文字幕 | 天天干天天天天 | 综合久久婷婷 | 色综合色综合久久综合频道88 | 免费在线一区二区 | av一级片在线观看 | 波多野结衣电影一区 | 久久久www成人免费毛片麻豆 | 久久久久福利视频 | 亚洲涩涩网 | 久久精品福利视频 | 99久久99久久 | 国产小视频国产精品 | 国产精品成人av在线 | 欧美少妇bbwhd | 久久久免费观看视频 | 欧美与欧洲交xxxx免费观看 | 99在线高清视频在线播放 | 亚洲国产美女精品久久久久∴ | 黄色片亚洲 | 最近中文字幕免费 | 日韩中文字幕视频在线 | 伊人超碰在线 | av线上看 | 成人h视频在线播放 | 婷婷在线视频观看 | 日韩在线观看小视频 | 欧美二区三区91 | 国产视频1区2区 | 日韩中文字幕视频在线 | 综合网在线视频 | 欧美日韩视频网站 | 免费视频你懂的 | 色婷婷综合久久久 | 欧美一二区视频 | 手机在线小视频 | 久久免费视频3 | 国产精品久免费的黄网站 | 亚洲一区二区麻豆 | 亚洲丁香日韩 | 91在线麻豆 | 色婷婷在线观看视频 | 日韩中文字幕免费在线播放 | 日韩色综合网 | 国产91亚洲| 精品国产色 | 成年人免费av | 久久久国产影院 | 日本精品久久久久久 | 天天干天天做天天爱 | 欧美国产日韩一区二区三区 | 久久国产精品一国产精品 | 一本一本久久a久久精品综合 | 成人毛片a | 91在线porny国产在线看 | 免费观看福利视频 | 在线一二三区 | 99久久婷婷 | 欧美激情综合五月色丁香 | 天天躁日日躁狠狠躁 | 伊人久久在线观看 | 97超碰在线久草超碰在线观看 | 在线观看免费国产小视频 | 黄色福利| 精品日韩av| 久久国产精品免费视频 | 欧美一级片免费在线观看 | 日韩欧美在线综合网 | 黄污网站在线 | av看片在线 | 天天综合天天做天天综合 | 美女网站视频色 | 日本巨乳在线 | 国产精品一区二区三区视频免费 | 91在线成人| 综合婷婷丁香 | 91九色视频在线观看 | 婷婷综合久久 | 日本在线视频网址 | 99资源网 | a√天堂中文在线 | 国产成人在线网站 | 日韩免费av片 | 天天插综合 | 国产专区视频在线 | 国产精品一区二区免费在线观看 | 国产美女精品人人做人人爽 | 亚洲乱码精品 | 国产精品一区久久久久 | 国产91九色视频 | av一本久道久久波多野结衣 | 美女国内精品自产拍在线播放 | 午夜视频在线观看一区二区 | 91少妇精拍在线播放 | 韩国一区二区在线观看 | 区一区二区三在线观看 | 亚洲日本精品视频 | 丁香婷婷激情啪啪 | 久久不卡免费视频 | 国产视频欧美视频 | 青青河边草观看完整版高清 | 国产精品 国产精品 | 国产一二区精品 | 国产一级在线视频 | 国产美女精彩久久 | 国内一级片在线观看 | 日日日视频 | 亚洲成年人免费网站 | 久久久999精品视频 国产美女免费观看 | 99热精品国产一区二区在线观看 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 精品久久亚洲 | av网站在线观看免费 | 玖草影院| 高清中文字幕 | 91黄色在线视频 | 狠狠五月天 | 四虎免费在线观看视频 | 五月综合久久 | 国产精品毛片一区 | www.久久精品视频 | 在线观看爱爱视频 | 免费看污污视频的网站 | 三级黄色免费 | 亚洲一级免费电影 | 在线观看完整版免费 | 久久99久久99精品免费看小说 | 精品国产免费久久 | 久久网站最新地址 | 国产精品免费观看视频 | 日韩精品一区二区三区免费视频观看 | 91视频免费看片 | 99婷婷狠狠成为人免费视频 | 久久久久在线观看 | 久草免费电影 | av成人动漫 | va视频在线 | 国产专区视频在线观看 | 97超碰精品 | 国产精品综合久久久久 | 婷婷伊人综合亚洲综合网 | 五月婷香 | 玖玖综合网 | 亚洲国产一区二区精品专区 | 91视频a| 欧美日韩另类在线 | 91mv.cool在线观看 | 亚洲国产播放 | 中文字幕高清视频 | 亚洲精品免费在线视频 | 亚洲乱码精品 | 中文av日韩 | av在线免费观看黄 | 欧美a级成人淫片免费看 | 九九热视频在线播放 | caobi视频 | 国产精品美女久久久久久网站 | 婷婷www | 国产第一页在线播放 | 中文字幕在线免费观看视频 | 国产成人免费精品 | 色婷婷天天干 | 午夜精品久久久久久久爽 | 97超碰人人澡 | 天天干天天拍天天操天天拍 | 四虎成人精品永久免费av | 久久久国产精品亚洲一区 | 国产专区欧美专区 | 亚洲高清不卡av | 欧美激情综合五月色丁香 | 国产一区二区电影在线观看 | 成人免费影院 | 日本精品久久久一区二区三区 | 久久怡红院 | 国产精品日韩久久久久 | 97夜夜澡人人双人人人喊 | 欧美激情第28页 | 丁香av| 81国产精品久久久久久久久久 | 日产乱码一二三区别免费 | 亚洲精品66| 丁香婷婷综合激情 | 日韩精品一区二区三区免费观看视频 | 久久一区二区三区超碰国产精品 | 久久免费视频在线观看30 | 国产精品国产亚洲精品看不卡 | 国产在线观看h | 91香蕉视频色版 | 日韩高清免费观看 | 国产午夜三级一区二区三桃花影视 | 亚洲国产mv | 免费国产一区二区视频 | www.五月天色 | 成人av亚洲 | 亚洲视频一 | 日本中文一级片 | 免费av在 | 手机看国产毛片 | 在线观看中文字幕一区二区 | 久久毛片视频 | 久久久精品午夜 | 香蕉视频在线网站 | 97超碰在线资源 | 精品国产久 | 福利视频入口 | 国产区精品视频 | 色综久久 | 又长又大又黑又粗欧美 | 国产日韩视频在线 | 丁香在线| 久久久久在线 | 国产成人免费在线观看 | 久久天堂网站 | 色综合久久久久久久久五月 | 国产中文视频 | 奇米777777 | 国产精品美女网站 | 日韩免费观看视频 | 午夜精品成人一区二区三区 | 国产午夜视频在线观看 | 亚洲一区日韩在线 | 国产精品久久久久永久免费观看 | 日韩精品一区二区三区免费观看 | 精品久久1 | 婷婷综合影院 | 日韩av成人免费看 | 日韩特黄一级欧美毛片特黄 | 久草网免费 | 91视频高清免费 | av一级在线观看 | 91在线免费播放 | 国产精品99久久久久久宅男 | 久久综合九色综合久99 | 欧美 亚洲 另类 激情 另类 | 91视频国产免费 | 天天操天天爽天天干 | 精品在线看 | 国产小视频你懂的在线 | 日日夜夜精品视频天天综合网 | 国产91学生粉嫩喷水 | 狠狠的日日 | 欧美日韩综合在线观看 | 久久成人国产精品 | 欧美国产高清 | 日韩精品资源 | 视频三区在线 | 国产成人精品亚洲a | 亚洲一区不卡视频 | 欧美91精品久久久久国产性生爱 | 美女黄频在线观看 | 激情伊人五月天 | 久久 一区 | 国产日产精品一区二区三区四区的观看方式 | 中文字幕av在线电影 | 国产精品黄色在线观看 | 久久国产精品二国产精品中国洋人 | 亚洲一区二区三区在线看 | 蜜臀av性久久久久av蜜臀妖精 | 久久国产精品系列 | 免费日韩一区二区 | 黄色三级免费片 | 国产欧美久久久精品影院 | 麻豆久久久久久久 | 精品免费视频123区 午夜久久成人 | 夜夜高潮夜夜爽国产伦精品 | 色丁香婷婷 | 2019中文最近的2019中文在线 | 欧美成人理伦片 | 国产精品热视频 | 国产麻豆精品一区二区 | 午夜影院在线观看18 | 热久久免费国产视频 | 在线视频观看91 | 91精品久久久久 | 久久99精品国产99久久6尤 | 久久午夜免费视频 | 97超碰人人澡人人 | 久久综合色天天久久综合图片 | 久久婷婷开心 | 亚洲精品大全 | 久日精品 | 黄色软件在线看 | 在线黄色av | 99热精品免费观看 | 亚洲日本在线一区 | 国产精品二区三区 | 在线三级播放 | a v在线观看 | 中文字幕第一页在线 | 男女激情麻豆 | av天天澡天天爽天天av | 国产精品2018 | 中文字幕 国产视频 | 99热在线网站| 91九色九色 | 久久国产香蕉视频 | 91丨精品丨蝌蚪丨白丝jk | 久久成人麻豆午夜电影 | 日韩欧美高清不卡 | 91看片网址 | 欧美日韩精品影院 | 欧美精品xxx | 亚洲精品999 | 久久综合久久久 | 免费看短| 国产一区二区三区高清播放 | 精品一区二区免费 | 久久午夜精品视频 | 国产高清一级 | 国产成人99久久亚洲综合精品 | 九九热精品在线 | 成人高清av在线 | 亚洲特级片 | 日韩在线视频观看免费 | 免费在线播放黄色 | 欧美一级片免费 | 伊人天天狠天天添日日拍 | 在线观看免费高清视频大全追剧 | 亚洲免费成人 | 亚洲资源片 | 国产成人在线精品 | av三级av| 国产麻豆电影在线观看 | 最新日韩视频 | 久久精品这里都是精品 | 伊人狠狠色丁香婷婷综合 | 六月色婷婷 | 高清免费av在线 | 天天干天天做 | 日本在线免费看 | 国产在线观看一 | 日日干夜夜草 | 青春草视频在线播放 | 精品一区二区三区在线播放 | 国产成人99久久亚洲综合精品 | 天堂中文在线视频 | 婷婷网五月天 | 国产精品 美女 | 又色又爽又黄高潮的免费视频 | 五月婷婷久草 | 中文字幕在线观看一区 | 欧美 日韩 性 | 久久伊人色综合 | 久久精品亚洲一区二区三区观看模式 | 日韩美女高潮 | 国产中文视频 | 久久99精品久久久久婷婷 | 天天天干天天天操 | 国产精品破处视频 | 国产91欧美 | 人人爽人人爽av | 亚洲精品xxx | 天天做日日做天天爽视频免费 | 久草在线视频中文 | 国产亚洲小视频 | 久久免费视频网站 | 国产精品一区二区久久精品爱微奶 | 狠狠五月婷婷 | 91成年人网站| 久久av免费电影 | 91免费高清 | 亚洲黄色av网址 | 国产精品av久久久久久无 | 日韩在线不卡av | 久久久www成人免费毛片麻豆 | 91久久国产自产拍夜夜嗨 | japanesexxxxfreehd乱熟 | 91久久奴性调教 | 国产91免费看 | 日本女人的性生活视频 | 日本精品一 | 国产日本亚洲高清 | 欧美激情精品久久久久久免费印度 | 国内精品免费久久影院 | 亚洲国产三级在线观看 | 成人国产一区 | 国产精品涩涩屋www在线观看 | 国产一区二区在线影院 | 国产成人精品午夜在线播放 | 在线国产视频一区 | 久久9999久久免费精品国产 | 永久免费av在线播放 | 欧美日韩高清 | 天天射天天操天天干 | 在线 影视 一区 | 九九九在线观看视频 | 91精品国产麻豆国产自产影视 | 中文字幕在线人 | 国产精品观看在线亚洲人成网 | 2019中文最近的2019中文在线 | 亚洲一级电影在线观看 | 精品国产99国产精品 | 亚洲成aⅴ人在线观看 | 99 久久久久 | 国产成人在线免费观看 | 夜夜躁狠狠躁日日躁视频黑人 | 91禁在线观看| 91视频亚洲 | 首页av在线| 国产亚洲在线观看 | 永久免费观看视频 | 久久一级片 | 日韩欧美国产精品 | 日韩在线观看影院 | 中文字幕av免费在线观看 | 欧美一级小视频 | 999久久| 亚洲国产日韩在线 | 久久久免费观看视频 | 色999视频| 国产精品免费不卡 | 亚洲免费高清视频 | 又黄又刺激 | 97精品国产97久久久久久久久久久久 | 国产视频中文字幕在线观看 | 亚洲午夜精品久久久久久久久久久久 | 日韩在线免费高清视频 | 欧美日韩免费一区二区 | 欧美日韩中文视频 | 午夜影院一级 | 久久亚洲欧美日韩精品专区 | 色综合久久综合中文综合网 | 亚洲码国产日韩欧美高潮在线播放 | 国产午夜精品一区二区三区在线观看 | 国产网站av | 久久精品视频日本 | 国产午夜不卡 | 久草综合在线 | 亚洲免费色 | 欧美另类69 | 成人动漫精品一区二区 | 久久精品1区 | 美女福利视频网 | 国产做a爱一级久久 | 人人插人人看 | 国内视频在线观看 | av短片在线观看 | 韩国精品视频在线观看 | 色综合久久久 | 国产人成一区二区三区影院 | 日日干夜夜草 | 日日夜夜精品 | 97在线公开视频 | 天天操天天干天天干 | 一区二区三区视频 | 欧亚日韩精品一区二区在线 | 日本中文字幕视频 | 日韩电影在线观看一区二区三区 | 久久全国免费视频 | 久久久男人的天堂 | 亚洲精品高清视频 | 国产一级二级三级视频 | 99久久久国产精品美女 | 麻豆精品在线视频 | 人人爱人人做人人爽 | 91精品国产乱码久久桃 | 91男人影院| 久久精品国产一区二区三 | 日韩在线高清免费视频 | 午夜精品视频一区二区三区在线看 | 黄色一级影院 | 亚洲黄色激情小说 | 欧美大片在线观看一区 | 亚洲91av| 91精品免费在线 | 欧美日韩国产综合一区二区 | 精品999 | 一区二区三区精品久久久 | 欧美日韩99 | 中文字幕日韩一区二区三区不卡 | 国产精品久久久久9999吃药 | 久艹视频在线观看 | 日韩有码在线观看视频 | 一区二区三区动漫 | 免费观看一级一片 | 国产精品九九九九九 | 国内精品免费久久影院 | 在线色视频小说 | 久久久久久久久久久久影院 | 国产精品亚洲片在线播放 | 丁香五婷| 国产高清免费在线观看 | 日韩三级av| 在线视频 91 | japanese黑人亚洲人4k | 日本黄色免费在线观看 | 日韩激情视频在线观看 | 国产日本三级 | 99久在线精品99re8热视频 | 中文乱幕日产无线码1区 | 精品一区二区免费在线观看 | 亚洲国产中文字幕在线观看 | 夜夜操天天 | 在线久草视频 | 中文字幕免费看 | 麻豆传媒视频在线 | 色永久免费视频 | 免费一级片观看 | 亚洲国产成人精品电影在线观看 | 色综合久久88色综合天天人守婷 | 中文字幕二区三区 | 国内精品在线一区 | 日本bbbb摸bbbb | 国产精品毛片网 | 精品影院一区二区久久久 | 久久成人毛片 | 日韩一二区在线 | 欧美日韩国产精品一区二区亚洲 | 91久久人澡人人添人人爽欧美 | 日韩欧美成 | 日韩av片无码一区二区不卡电影 | 99久久99精品 | 激情综合网婷婷 | 十八岁以下禁止观看的1000个网站 | 久久一及片 | 亚洲一级理论片 | 日韩av影视| 91少妇精拍在线播放 | 亚洲在线网址 | 欧美精品乱码久久久久 | 日本最新中文字幕 | 欧美精彩视频在线观看 | 99在线免费视频 | 91在线你懂的 | 丁香5月婷婷 | 蜜臀一区二区三区精品免费视频 | 国产精品自产拍在线观看中文 | 97视频中文字幕 | 国产欧美在线一区 | 成人羞羞视频在线观看免费 | 中文字幕在线中文 | 国产九九九九九 | 91亚洲精品久久久久图片蜜桃 | 亚洲欧美成人在线 | 成人在线黄色电影 | 九九在线国产视频 | 免费日韩视频 | 黄色大片免费网站 | 国产玖玖精品视频 | 中文字幕中文字幕在线中文字幕三区 | 一区二区三区日韩视频在线观看 | 国产第一页福利影院 | 日韩在线观看精品 | 成人黄色小说视频 | 三级毛片视频 | 国产成人免费av电影 | 亚洲精品免费在线观看视频 | 免费观看第二部31集 | 久久精品首页 | 久久久久人人 | 亚洲美女视频在线观看 | 天天摸天天操天天爽 | 99视频在线免费看 | 日本中文字幕在线电影 | 麻豆网站免费观看 | 99产精品成人啪免费网站 | 视频国产 | 日韩免费视频线观看 | 久久激五月天综合精品 | 日韩高清精品免费观看 | 美女视频网站久久 | 狠狠狠色丁香婷婷综合激情 | 四虎成人免费观看 | 成人一级黄色片 | 免费热情视频 | 亚洲九九 | 国产在线不卡一区 | 久草av在线播放 | 国产精品麻豆99久久久久久 | 国产尤物在线观看 | 日韩视频中文 | 最近中文字幕 | 久久伊人精品一区二区三区 | 91精品国产成人www | 狠狠综合久久av | 国产精品久久久久久久久久 | 88av色| 国产一区自拍视频 | 久久久久免费网站 | 91激情视频在线 | 九九色视频 | av 一区二区三区四区 | 在线中文字幕一区二区 | 亚洲婷婷免费 | 欧美91精品国产自产 | 日韩国产欧美在线视频 | 欧美福利视频 | 国产群p | 四虎影视欧美 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 国产成人性色生活片 | 亚洲乱码精品久久久 | 中文字幕av日韩 | 免费高清在线观看成人 | 日韩激情综合 | 黄色三级在线观看 | 国产精品麻豆视频 | 人人干网 | 欧美色伊人 | 亚洲更新最快 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 久久成人人人人精品欧 | 一区在线观看视频 | aa级黄色大片 | 18pao国产成视频永久免费 | 99视频在线免费 | 香蕉在线观看 | 精品福利网站 | 开心激情五月网 | 国产又粗又猛又黄又爽视频 | 国产精品你懂的在线观看 | 最近免费中文视频 | 中文字幕中文字幕在线中文字幕三区 | 日韩在线观看视频一区二区三区 | 亚洲成色| 美女搞黄国产视频网站 | 婷婷精品视频 | 亚洲精品乱码久久久久久 | 2021av在线 | 免费久久视频 | 深爱激情av | 天天摸夜夜操 | 成年人视频在线免费观看 | 精品国产自在精品国产精野外直播 | 成人免费网视频 | 色综合久久中文综合久久牛 | 国产69精品久久99的直播节目 | 69视频永久免费观看 | 国产丝袜| 久操视频在线免费看 | 亚洲无在线 | 免费av网址大全 | 精品国产欧美一区二区 | av丝袜天堂 | 国产一区二区三区在线免费观看 | 精品久久国产一区 | 天天玩天天操天天射 | 日韩中文久久 | 国产一线二线三线在线观看 | 在线播放日韩av | 91超国产| 色婷婷 亚洲 | 国产成人综 | 激情五月婷婷综合网 | 国产精品久久久久婷婷二区次 | 少妇搡bbbb搡bbb搡aa | 亚洲欧美视频网站 | 天天草天天爽 | 丁香婷婷激情五月 | 九九99靖品 | 免费观看完整版无人区 | av在线小说 | 黄污在线观看 | 四虎成人精品永久免费av | 国产一级片久久 | 国产精品久久久精品 | 在线免费中文字幕 | 国产资源精品在线观看 | 香蕉精品视频在线观看 | 日韩激情免费视频 | 全久久久久久久久久久电影 | 超碰免费av| 中文字幕中文字幕在线中文字幕三区 | 奇米影视在线99精品 | 99视频| av一本久道久久波多野结衣 | www黄色大片| 在线观看黄色的网站 | 中文字幕免费高 | 精品视频免费看 | 成人高清av在线 | 国产成人精品一区二区三区网站观看 | 久久久久国产精品视频 | 九九久久精品视频 | 天堂av网址 | 国产美女网站视频 | 国产精品免费视频一区二区 | 久久超级碰 | 国产视频中文字幕 | 五月婷婷另类国产 | 色婷婷国产在线 | 免费看的av片| 色99导航 | 国产大陆亚洲精品国产 | 国产精品 日韩 欧美 | 黄色录像av | 米奇狠狠狠888 | 亚洲精品在线观看不卡 | 久久99国产精品二区护士 | 99免费| 日韩黄色大片在线观看 | 天堂网一区二区三区 | 日日干夜夜干 | 97精品超碰一区二区三区 | 中国一 片免费观看 | 国产91精品一区二区麻豆网站 | 在线免费成人 | 久久久久久久电影 | 国产精品黄色影片导航在线观看 |