日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Mapbox GL線條樣式全解析:從line屬性配置到數(shù)據(jù)驅(qū)動(dòng)動(dòng)態(tài)渲染

Mapbox GL線條樣式全解析:從line屬性配置到數(shù)據(jù)驅(qū)動(dòng)動(dòng)態(tài)渲染 我最早接觸 Mapbox 的線樣式時(shí)第一反應(yīng)是這玩意兒不就調(diào)個(gè)顏色和粗細(xì)嗎真正上手才知道線條樣式在 Mapbox GL 里對(duì)應(yīng)的是一整套以line-開(kāi)頭的 paint 屬性體系從基礎(chǔ)的線寬、顏色到虛線、漸變、描邊、偏移再到數(shù)據(jù)驅(qū)動(dòng)樣式組合起來(lái)能玩的花樣非常多。如果你也在用 Mapbox 畫(huà)路線、邊界、等值線或者軌跡這篇就把線條樣式從配置到原理、從靜態(tài)到動(dòng)態(tài)完整拆開(kāi)講清楚順便把我踩過(guò)的坑也一并交代了。先說(shuō)下這篇內(nèi)容的范圍以 Mapbox GL JS v2/v3 為主涉及addLayer添加line類型圖層、核心 paint 屬性的作用機(jī)制、GeoJSON 數(shù)據(jù)格式要求、樣式動(dòng)態(tài)更新最后是幾個(gè)高頻問(wèn)題的排查過(guò)程。適合剛接觸 Mapbox 的初學(xué)者也適合已經(jīng)能跑通基礎(chǔ)地圖、想在樣式細(xì)節(jié)上做深的朋友。1. 動(dòng)手前的裝備Token 獲取與首次初始化很多人在 Mapbox 官網(wǎng)注冊(cè)賬號(hào)之后卡在了第一步到底去哪拿 token拿到之后又該放哪。這個(gè)環(huán)節(jié)看似基礎(chǔ)實(shí)際上后面所有圖層能否正常顯示都跟它直接相關(guān)所以先把這塊踩實(shí)。1.1 注冊(cè)與 Token 獲取的正確姿勢(shì)注冊(cè)流程沒(méi)什么特別的去 Mapbox 官網(wǎng)用郵箱注冊(cè)完成郵箱驗(yàn)證后進(jìn)入賬戶后臺(tái)。注意一個(gè)細(xì)節(jié)Mapbox 的 Access Token 分幾種包括默認(rèn)的 public tokenpk.開(kāi)頭和 secret tokensk.開(kāi)頭。前端地圖渲染用的是 public token 就夠了secret token 千萬(wàn)別寫(xiě)進(jìn)前端代碼里它泄露了相當(dāng)于你的賬戶額度被人白嫖。在后臺(tái)的Account Tokens頁(yè)面可以創(chuàng)建新 token。創(chuàng)建時(shí)建議手動(dòng)選擇一個(gè) scope 集合至少要包含styles:read、fonts:read、tiles:read這幾個(gè)權(quán)限對(duì)應(yīng)了加載樣式、字體和瓦片的基礎(chǔ)需求。Token 創(chuàng)建完成后有一串很長(zhǎng)的字符串就是類似pk.eyJ1Ijoi...的長(zhǎng)文本復(fù)制保存好。1.2 初始化地圖Token 放哪才不會(huì)被坑初始化地圖時(shí) token 的注入方式有兩種一種是在引入 Mapbox GL JS 的 script 標(biāo)簽之前直接給mapboxgl.accessToken賦值另一種是在new mapboxgl.Map()的構(gòu)造參數(shù)里通過(guò)accessToken字段傳入。推薦第一種代碼更清晰mapboxgl.accessToken pk.eyJ1Ijoi...; const map new mapboxgl.Map({ container: map, style: mapbox://styles/mapbox/streets-v12, center: [116.4, 39.9], zoom: 10 });這里有個(gè)常見(jiàn)的坑token 放到了 DOM 元素加載之前執(zhí)行。如果你把mapboxgl.accessToken ...寫(xiě)在了#map這個(gè) div 的前面而且用了document.getElementById(map)去拿容器大概率會(huì)報(bào)Container not found。反正我建議把地圖初始化代碼整體放在頁(yè)面底部或者用window.onload/DOMContentLoaded包起來(lái)順序問(wèn)題就徹底沒(méi)了。初始化完成后如果你能看到 Mapbox 默認(rèn)的街道底圖說(shuō)明環(huán)境已經(jīng)通了。接下來(lái)所有線條相關(guān)操作都建立在這張底圖之上。2. line 圖層的骨架Source 數(shù)據(jù)格式與 addLayer 配置線條不是憑空畫(huà)出來(lái)的它必須先有數(shù)據(jù)源source再通過(guò)圖層layer定義怎么畫(huà)。Mapbox 的這套數(shù)據(jù)與樣式分離設(shè)計(jì)一開(kāi)始可能會(huì)覺(jué)得繞但理解了之后會(huì)發(fā)現(xiàn)它特別適合做動(dòng)態(tài)換膚和交互高亮。2.1 GeoJSON 里 LineString 的格式約束Mapbox 中最常用的 source 類型是 GeoJSON線條對(duì)應(yīng)的幾何類型是LineString或MultiLineString。一個(gè)最簡(jiǎn)單的線條數(shù)據(jù)長(zhǎng)這樣{ type: FeatureCollection, features: [ { type: Feature, properties: { name: 路段A, speed: 80 }, geometry: { type: LineString, coordinates: [ [116.4, 39.9], [116.5, 39.92], [116.6, 39.88] ] } } ] }有幾點(diǎn)要提醒坐標(biāo)順序是經(jīng)度在前、緯度在后寫(xiě)反了線條會(huì)跑到地圖另一頭去我第一次就把這個(gè)順序搞反了折騰了半天才發(fā)現(xiàn)是經(jīng)緯度反了。另外LineString至少需要兩個(gè)坐標(biāo)點(diǎn)MultiLineString則是多個(gè)LineString的數(shù)組適合表達(dá)一條整體邏輯線路的多段不連續(xù)幾何。properties 字段是自由擴(kuò)展的它不會(huì)直接決定樣式但它是后面做數(shù)據(jù)驅(qū)動(dòng)樣式的關(guān)鍵。比如你想根據(jù)道路的speed屬性給線條上不同顏色靠的就是 properties 里的字段。2.2 addLayer 的兩個(gè)核心參數(shù)source 與 paint給地圖添加線條圖層的完整代碼如下map.addLayer({ id: route-line, type: line, source: { type: geojson, data: geojsonData }, layout: { line-cap: round, line-join: round }, paint: { line-color: #ff6b6b, line-width: 4, line-opacity: 0.8 } });這里我會(huì)特別強(qiáng)調(diào)type: line這個(gè)字段。Mapbox GL 的圖層類型不止一種如果你把type寫(xiě)成了fill那面的填充邏輯會(huì)覆蓋掉線的繪制邏輯線條直接消失。實(shí)際開(kāi)發(fā)里我遇到過(guò)幾次圖層添加了但地圖上啥也沒(méi)有的情況排查到最后都是這種低級(jí)錯(cuò)誤。layout和paint是兩個(gè)不同的屬性組layout 控制的是幾何層面的渲染方式比如線帽長(zhǎng)什么樣、拐角怎么連接paint 控制的是視覺(jué)樣式比如顏色、寬度、透明度。在 Mapbox 文檔里這兩類屬性用不同的前綴標(biāo)識(shí)line-開(kāi)頭的屬性一部分歸 layout一部分歸 paint需要具體區(qū)分。我習(xí)慣記憶的方式是改顏色、寬度、透明度、模糊、偏移這類給人看的效果是 paint改端點(diǎn)形狀、連接形狀這些幾何構(gòu)造方式是 layout。2.3 直接內(nèi)聯(lián) source 與事先定義 source 的區(qū)別上面代碼里把 source 直接寫(xiě)在了addLayer的source字段里這是 Mapbox GL JS 支持的一種快捷寫(xiě)法數(shù)據(jù)會(huì)被隱式創(chuàng)建一個(gè) source。但如果你需要多個(gè)圖層共用同一份數(shù)據(jù)——比如一套線數(shù)據(jù)既用來(lái)畫(huà)道路又用來(lái)畫(huà)道路兩側(cè)的描邊那最好顯式先添加 sourcemap.addSource(road-data, { type: geojson, data: geojsonData }); map.addLayer({ id: road-line, type: line, source: road-data, paint: { line-color: #333, line-width: 6 } }); map.addLayer({ id: road-outline, type: line, source: road-data, paint: { line-color: #fff, line-width: 2, line-offset: 3 } });這種一個(gè) source 多個(gè) layer的模式在實(shí)際項(xiàng)目里非常常見(jiàn)做道路網(wǎng)、地鐵線路圖時(shí)幾乎必用。原因是 Mapbox 允許同一條幾何數(shù)據(jù)用不同的 paint 參數(shù)渲染多遍疊加在一起就是描邊、發(fā)光、陰影等效果而不用復(fù)制數(shù)據(jù)。3. 線條樣式核心屬性從基礎(chǔ)到進(jìn)階逐步拆解這節(jié)是全文的重頭戲。我把line-開(kāi)頭的常用屬性按基礎(chǔ)三件套幾何形態(tài)控制進(jìn)階視覺(jué)特效數(shù)據(jù)驅(qū)動(dòng)四個(gè)層次來(lái)講每一層都給出可以直接抄的配置。3.1 基礎(chǔ)三件套顏色、寬度、透明度line-color是最直觀的屬性支持十六進(jìn)制、rgb()、rgba()、hsl()等格式。特別注意如果使用了line-gradient線性漸變line-color會(huì)被忽略兩者不能同時(shí)生效。line-width的單位是像素但這里的像素是屏幕像素而非地理單位。當(dāng)?shù)貓D縮放級(jí)別變化時(shí)默認(rèn)為line-width不會(huì)隨縮放等比變化除非你手動(dòng)做了interpolate表達(dá)式按 zoom 插值。這是一個(gè)地圖項(xiàng)目里非常常規(guī)的需求小比例尺時(shí)線細(xì)一點(diǎn)大比例尺時(shí)線粗一點(diǎn)如果直接固定一個(gè)值放大后線條會(huì)顯得過(guò)細(xì)縮小后又會(huì)糊成一團(tuán)。line-opacity控制整體不透明度取值0到1。如果線條下面還有別的圖層需要露出下面的內(nèi)容就用 opacity 做半透明處理。我一般把 opacity 用在背景輔助線上比如行政區(qū)邊界疊加到底圖上半透明效果會(huì)讓主圖層更突出?;A(chǔ)三件套組合的最小配置paint: { line-color: #2b6cb0, line-width: 3, line-opacity: 0.9 }3.2 幾何形態(tài)線帽與拐角line-cap控制線頭形狀可選值有butt平頭、round圓頭、square方頭。默認(rèn)是butt線條在端點(diǎn)處平直切斷。round是最常用的尤其在繪制道路、軌跡時(shí)圓頭看起來(lái)自然很多不會(huì)有被刀切了一刀的生硬感。line-join控制折線拐角處的連接方式可選值bevel斜切、round圓角、miter尖角。道路、河流這種自然元素首選round拐彎平滑如果是建筑輪廓、規(guī)劃紅線這類偏硬朗的圖形可以選miter或bevel。有個(gè)細(xì)節(jié)miter模式下如果拐角角度太小會(huì)出現(xiàn)尖角過(guò)長(zhǎng)甚至超出預(yù)期繪制范圍的問(wèn)題。Mapbox 為此提供了line-miter-limit屬性默認(rèn)值2意思是當(dāng)尖角長(zhǎng)度超過(guò)線寬乘以該值的倍數(shù)時(shí)會(huì)自動(dòng)切換為bevel渲染。你不需要經(jīng)常調(diào)它但知道這個(gè)機(jī)制后遇到尖角變形就不會(huì)慌了。3.3 虛線、點(diǎn)線與其他 patternline-dasharray是畫(huà)虛線用的屬性值為數(shù)字?jǐn)?shù)組表示實(shí)線段和空白段的長(zhǎng)度比例單位是線寬的倍數(shù)。例如line-dasharray: [4, 2]表示畫(huà) 4 倍線寬長(zhǎng)度的實(shí)線、空 2 倍線寬長(zhǎng)度的空白循環(huán)往復(fù)。這個(gè)倍數(shù)關(guān)系很重要——同一個(gè) dasharray 數(shù)組在不同線寬下虛線的實(shí)際疏密會(huì)隨之變化。比如線寬 2 時(shí)[4, 2]的實(shí)線段是 8 像素線寬 10 時(shí)實(shí)線段就是 40 像素。如果希望虛線視覺(jué)疏密絕對(duì)一致需要結(jié)合 line-width 一起做 interpolate 調(diào)整否則會(huì)顯得很奇怪。Mapbox 的線帽和虛線有個(gè)聯(lián)動(dòng)機(jī)制要留意當(dāng)line-cap為butt時(shí)虛線段的端點(diǎn)會(huì)整齊切斷當(dāng)line-cap為round時(shí)每個(gè)實(shí)線段的兩端會(huì)變成半圓形線段之間的視覺(jué)間距看起來(lái)略短。一個(gè)常見(jiàn)效果——鐵軌線就是round線帽加[2, 1]這種短周期 dasharray 產(chǎn)生的很適合用在跑步路線、規(guī)劃中的道路這類場(chǎng)景。3.4 進(jìn)階視覺(jué)描邊、偏移與模糊line-offset可以把線條沿垂直方向平移一段像素正值為向右上偏移負(fù)值為向左下偏移。這個(gè)屬性的作用非常廣實(shí)現(xiàn)道路描邊、雙線道路、地鐵線路的平行線效果都靠它。一個(gè)典型的雙線道路做法先用一個(gè)line-offset: -4的圖層畫(huà)一條較寬的顏色甲線條再用line-offset: 4的圖層畫(huà)一條較窄的顏色乙線條。因?yàn)閮蓷l線共用同一個(gè) source幾何一致偏移方向相反視覺(jué)上就形成了道路中央分隔線的效果。line-blur給線條添加高斯模糊單位像素。配合較大的 line-width可以做出光帶效果常用于軌跡高亮、航線展示。要注意的是line-blur的模糊是向內(nèi)外兩側(cè)均勻擴(kuò)散的模糊半徑超過(guò)線寬一半時(shí)線條中心會(huì)變淡出現(xiàn)空心感。我一般把 line-blur 設(shè)為線寬的 0.8 到 1.2 倍之間這樣既有光暈感又保留中心實(shí)體。line-gap-width是空心線的核心。它在線條內(nèi)部掏空一塊區(qū)域掏空寬度由該屬性決定。比如線寬 10、gap-width 4視覺(jué)上就是兩條各 3 像素的平行線夾著一條 4 像素的空白。做地鐵線路圖時(shí)一個(gè)線路圖層用 gap-width 配合深色背景就能畫(huà)出兩條平行軌道線再疊加一個(gè)白色小圓點(diǎn)圖層當(dāng)車站標(biāo)準(zhǔn)的軌道效果就出來(lái)了。// 雙軌效果配置 const trackLayer { id: track, type: line, source: metro-line, paint: { line-color: #333, line-width: 8, line-gap-width: 5 } };3.5 線性漸變line-gradient 的使用邊界line-gradient允許線條顏色沿路徑方向漸變例如從起點(diǎn)到終點(diǎn)由綠變紅非常適合表達(dá)一條路徑的強(qiáng)度變化性能指標(biāo)、擁堵程度等。它的使用機(jī)制和普通的 paint 屬性有很大不同必須配合line-gradient表達(dá)式且表達(dá)式需要一個(gè)[line-progress]作為輸入。paint: { line-width: 6, line-gradient: [ interpolate, [linear], [line-progress], 0, #2ecc71, 0.5, #f1c40f, 1, #e74c3c ] }[line-progress]是一個(gè)特殊變量取值從 0 到 1表示線段從頭到尾的進(jìn)度比例。不能直接拿 properties 里的某個(gè)數(shù)值來(lái)做漸變的輸入只能用 line-progress。另外line-gradient生效時(shí)line-color完全失效且Mapbox 文檔里明確 line-gradient 不支持?jǐn)?shù)據(jù)驅(qū)動(dòng)也就是不能根據(jù)不同 feature 動(dòng)態(tài)切換漸變規(guī)則它只能做全局統(tǒng)一的一條漸變管線。可能有人會(huì)問(wèn)那我想給不同路段設(shè)置不同顏色而不是一條線上漸變?cè)撛趺醋龃鸢甘腔氐綌?shù)據(jù)驅(qū)動(dòng)用line-color配合match或interpolate表達(dá)式按 properties 里的字段映射顏色。這才是按屬性區(qū)分顏色的正解。4. 動(dòng)態(tài)改樣式與條件式渲染從靜態(tài)到交互靜態(tài)線條只能看動(dòng)態(tài)改樣式才有靈魂。Mapbox 提供了setPaintProperty這個(gè)方法可以在運(yùn)行時(shí)更新圖層樣式。這一步掌握之后懸停高亮、篩選顯示、主題切換都手到擒來(lái)。4.1 setPaintProperty 更新單屬性map.setPaintProperty(route-line, line-color, #e74c3c); map.setPaintProperty(route-line, line-width, 8);第一個(gè)參數(shù)是圖層 id第二個(gè)是 paint 屬性名第三個(gè)是新值。這個(gè)方法會(huì)以動(dòng)畫(huà)方式更新樣式視覺(jué)上非常平滑。需要注意setPaintProperty 只能更新 paint 屬性不能更新 layout 屬性。如果你想換line-cap或line-join得用setLayoutPropertymap.setLayoutProperty(route-line, line-cap, butt);雖然 layout 屬性改動(dòng)不觸發(fā) paint 的動(dòng)畫(huà)過(guò)渡但也不會(huì)造成地圖整體重載所以不用擔(dān)心閃爍問(wèn)題。4.2 數(shù)據(jù)驅(qū)動(dòng)樣式match 和 interpolate 表達(dá)式的實(shí)際使用Mapbox 的樣式值支持表達(dá)式語(yǔ)法這意味著你可以在paint里寫(xiě)一個(gè)函數(shù)而不只是一個(gè)常量。最常見(jiàn)的兩個(gè)場(chǎng)景場(chǎng)景一按類別給顏色假設(shè) route 數(shù)據(jù)里有type字段值可能是expressway、local、footpath想分別顯示紅、黃、綠paint: { line-color: [ match, [get, type], expressway, #e74c3c, local, #f1c40f, footpath, #2ecc71, #95a5a6 // 默認(rèn)兜底色 ], line-width: [ interpolate, [linear], [zoom], 8, 2, 12, 4, 16, 8 ] }match語(yǔ)法第一參是取值表達(dá)式后面是值-顏色成對(duì)出現(xiàn)的映射最后必須有一個(gè)兜底值不然匹配不到時(shí)會(huì)報(bào)錯(cuò)。[get, type]表示從 feature 的 properties 里取 type 字段。場(chǎng)景二數(shù)值連續(xù)映射顏色如果屬性值是連續(xù)數(shù)值比如speed從 0 到 120想從綠色漸變到紅色paint: { line-color: [ interpolate, [linear], [get, speed], 0, #2ecc71, 60, #f1c40f, 120, #e74c3c ] }注意這里第一參是[linear]也可以用[exponential, 0.5]來(lái)做非線性插值但一般線性就夠用了。數(shù)據(jù)驅(qū)動(dòng)樣式是 Mapbox 最強(qiáng)大的特性之一它的性能也足夠好Mapbox GL 通過(guò)分塊檢查 feature 的屬性值并按需重繪幾千個(gè) feature 的樣式切換基本無(wú)感。4.3 鼠標(biāo)懸停高亮與 feature-state 的結(jié)合懸停高亮經(jīng)常會(huì)用到feature-state這個(gè)機(jī)制比直接改源數(shù)據(jù)更高效。先在 source 上設(shè)置promoteId比如數(shù)據(jù)里每條 feature 有id字段map.addSource(route-data, { type: geojson, data: geojsonData, promoteId: id });然后在 paint 里用[feature-state, hover]作為條件paint: { line-color: [ case, [boolean, [feature-state, hover], false], #ff6b6b, #2b6cb0 ] }鼠標(biāo)移動(dòng)時(shí)通過(guò)setFeatureState更新?tīng)顟B(tài)map.on(mousemove, route-line, (e) { if (e.features.length 0) { const featureId e.features[0].id; map.setFeatureState({ source: route-data, id: featureId }, { hover: true }); } }); map.on(mouseleave, route-line, () { map.removeFeatureState({ source: route-data, id: hoveredId }); });這套方案比setPaintProperty去逐條覆蓋顏色精準(zhǔn)得多因?yàn)樗?feature 粒度管理狀態(tài)不會(huì)污染其他線條。如果數(shù)據(jù)里沒(méi)有 id 字段Mapbox 會(huì)基于坐標(biāo)生成內(nèi)部 id但那個(gè) id 不穩(wěn)定盡量保證數(shù)據(jù)里有穩(wěn)定的 id。5. 高頻坑與完整排查鏈路從線沒(méi)顯示到虛線不生效這里寫(xiě)幾個(gè)我在實(shí)際項(xiàng)目中踩過(guò)、也幫別人排查過(guò)的典型問(wèn)題。每個(gè)問(wèn)題我都盡量還原完整的排查思路而不是直接丟結(jié)論因?yàn)榕挪樗悸繁旧肀冉Y(jié)論更有復(fù)用價(jià)值。5.1 坑一圖層加了但線完全看不見(jiàn)現(xiàn)象代碼不報(bào)錯(cuò)地圖正常加載但 target 圖層區(qū)域空空如也。排查鏈路打開(kāi)瀏覽器開(kāi)發(fā)者工具在 Console 里看有沒(méi)有Unable to load source之類的報(bào)錯(cuò)如果有先查 source 的 data URL 是否正確或者內(nèi)聯(lián) GeoJSON 是否格式非法。在 Console 執(zhí)行map.getLayer(route-line)返回undefined說(shuō)明圖層壓根沒(méi)加上返回圖層對(duì)象但看不到說(shuō)明數(shù)據(jù)或樣式有問(wèn)題。執(zhí)行map.getSource(route-data)獲取 source 后調(diào)用getData()展開(kāi)輸出的 JSON檢查 coordinates 數(shù)組里每個(gè)點(diǎn)是否[lng, lat]順序正確數(shù)值是否在合法范圍。檢查type是否為line。我見(jiàn)過(guò)有人把 GeoJSON 里的 geometry type 和 layer type 搞混geometry 是LineString但 layer 的type寫(xiě)成了fill結(jié)果整個(gè)區(qū)域被填充而不是線條。檢查line-width是否被設(shè)成了0。說(shuō)實(shí)話我有一段時(shí)間為了做只在某 zoom 級(jí)別顯示線用表達(dá)式把寬度設(shè)為 0后來(lái)忘了改回來(lái)排查了非常久。5.2 坑二虛線不生效顯示的還是實(shí)線現(xiàn)象設(shè)置了line-dasharray: [4, 2]但線條依然實(shí)線顯示。完整原因分析Mesh 層面有兩種可能。第一種是線條太短。Mapbox 的 dasharray 在短線上會(huì)因?yàn)?line-width 與比例關(guān)系導(dǎo)致虛線變化不明顯如果一條線只有幾個(gè)像素長(zhǎng)虛線自然看不出效果。建議先拉長(zhǎng)測(cè)試線排除數(shù)據(jù)長(zhǎng)度因素。第二種原因是line-dasharray 與某些屬性不兼容。具體來(lái)說(shuō)line-cap設(shè)置為round時(shí)虛線段的端點(diǎn)會(huì)繪制成圓頭如果 dasharray 數(shù)組的值較小圓頭和圓頭連在一起視覺(jué)上就會(huì)趨向于一條連續(xù)的粗線。另外line-gap-width與 dasharray 同時(shí)使用時(shí)虛線中的空隙區(qū)域表現(xiàn)會(huì)受 gap-width 影響出現(xiàn)實(shí)線段看起來(lái)被劈開(kāi)、虛線間距消失的錯(cuò)覺(jué)。排查方式先把 line-cap 改成 buttline-gap-width 改成 0看虛線是否恢復(fù)。如果恢復(fù)了就是這兩個(gè)屬性對(duì) dasharray 的干擾。有一個(gè)隱藏很深的要求虛線渲染需要圖層是line類型且沒(méi)有開(kāi)啟line-border之類的附加繪制某些舊版本 GL JS 在部分 GPU 驅(qū)動(dòng)下對(duì) dasharray 支持不完善會(huì)出現(xiàn)虛線渲染成實(shí)線或渲染成雪花點(diǎn)。遇到這種情況要么升級(jí)版本要么把 dasharray 轉(zhuǎn)成數(shù)據(jù)預(yù)處理——在 GeoJSON 層面生成多個(gè)線段配合實(shí)線-空白交替繪制不過(guò)這個(gè)方案復(fù)雜而且維護(hù)成本高非必要不建議做。5.3 坑三線寬隨縮放比例不對(duì)放大后鋸齒嚴(yán)重現(xiàn)象zoom 級(jí)別變大時(shí)線條沒(méi)有同步變粗且邊緣出現(xiàn)明顯鋸齒。原因分析地圖瓦片在放大時(shí)會(huì)進(jìn)行插值縮放矢量數(shù)據(jù)的線條如果 line-width 沒(méi)有跟隨 zoom 變化就會(huì)出現(xiàn)縮放像素色塊導(dǎo)致的鋸齒。鋸齒感最直接的解決辦法是把line-width用 interpolate 表達(dá)式綁定 zoom讓線寬隨 zoom 平滑增加。paint: { line-width: [ interpolate, [linear], [zoom], 5, 1, 10, 3, 15, 8 ] }錨點(diǎn)zoom 值和線寬對(duì)應(yīng)值不是隨便填的需要結(jié)合實(shí)際地圖場(chǎng)景調(diào)試。比如展示城市道路時(shí)zoom 5全國(guó)視野線寬 1px 比較合適zoom 10城市級(jí)3pxzoom 15街道級(jí)8px。這個(gè)沒(méi)有數(shù)學(xué)公式基本靠經(jīng)驗(yàn)和視覺(jué)效果調(diào)。鋸齒還有一個(gè)來(lái)源是超長(zhǎng) LineString 在 WebGL 中被切割成多段繪制每段邊緣的抗鋸齒計(jì)算是獨(dú)立的導(dǎo)致接縫處出現(xiàn)拼接縫。這種情況可以通過(guò)減小單條 LineString 的長(zhǎng)度拆分 feature來(lái)緩解或者用 GeoJSON 的tolerance字段在數(shù)據(jù)源端做幾何簡(jiǎn)化。5.4 坑四Token 相關(guān)的 401 或樣式加載失敗雖然前面說(shuō)了 token 獲取但每次都要強(qiáng)調(diào)地圖不顯示且 Console 里報(bào)Unauthorized或403第一個(gè)要查的就是 token 是否正確、是否超出配額。我在調(diào)試時(shí)經(jīng)常遇到一種情況有人把 Mapbox GL JS 的 CDN 地址復(fù)制錯(cuò)了加載的是老版本 v1而 v1 和 v2 在 token 處理上存在差異。如果發(fā)現(xiàn)樣式一直掛在style.load事件不觸發(fā)檢查一下 script 引入的版本號(hào)和官網(wǎng)要求是否一致現(xiàn)在官方推薦直接用 v3 版本的 CDN 或 npm 包。還有一點(diǎn)如果你在本地開(kāi)發(fā)用的是file://協(xié)議打開(kāi) HTML某些瀏覽器對(duì)跨域讀取本地 GeoJSON 文件有限制也會(huì)導(dǎo)致 source 加載失敗。開(kāi)發(fā)階段建議用http-server、vite dev這類本地服務(wù)跑別直接雙擊 html 文件。6. 進(jìn)階優(yōu)化與性能注意樣式不只是能顯示還要考慮性能尤其數(shù)據(jù)量上來(lái)之后。這一節(jié)不展開(kāi)講所有性能優(yōu)化只講和線圖層直接相關(guān)的幾個(gè)點(diǎn)。6.1 大量線要素的性能隱患如果一次加載上萬(wàn)條線比如全國(guó)的河流網(wǎng)、道路網(wǎng)每條線都有復(fù)雜的 LineString直接塞進(jìn) GeoJSON source 會(huì)讓地圖明顯卡頓。Mapbox 的矢量渲染效率已經(jīng)很高但過(guò)度復(fù)雜的幾何體仍然會(huì)在縮放時(shí)觸發(fā)大量 CPU/GPU 計(jì)算。常用策略是數(shù)據(jù)簡(jiǎn)化simplify。發(fā)布前用工具降低坐標(biāo)點(diǎn)密度保留幾何大輪廓即可。在 Mapbox 層面還能調(diào)整line-width的最小值、關(guān)閉line-blur之類耗性能的效果這些在小數(shù)據(jù)量時(shí)感覺(jué)不到大數(shù)據(jù)量時(shí)非常明顯。另外line-dasharray本身也會(huì)帶來(lái)額外的 GPU 紋理計(jì)算所以虛線圖層只加在必要的場(chǎng)景。如果整個(gè)地圖有幾百個(gè)虛線圖層幀率下降會(huì)很明顯。6.2 用 setData 更新數(shù)據(jù)與用 setStyle 的取舍動(dòng)態(tài)更新線數(shù)據(jù)時(shí)可以直接操作 source 的setDatamap.getSource(route-data).setData(newGeoJSON);這個(gè)操作比整個(gè)setStyle輕量得多因?yàn)樗桓聰?shù)據(jù)層不會(huì)重新加載底圖樣式和字體。但是有個(gè)注意事項(xiàng)setData后 source 上的promoteId、feature-state 等配置不會(huì)丟但已設(shè)置的 feature-state 會(huì)因數(shù)據(jù)更新而失效所以高亮狀態(tài)要在更新數(shù)據(jù)后重新設(shè)置。如果換了 token 或者想整體換底圖風(fēng)格再考慮setStyle。6.3 與高德/Leaflet 線條樣式的差異是理解 Mapbox 的關(guān)鍵用過(guò) Leaflet 或高德 JS API 的話你可能習(xí)慣直接給 polyline 設(shè)置color、weight、opacity。Mapbox 的思路不太一樣它把樣式按屬性拆得非常細(xì)并且允許每個(gè)屬性用表達(dá)式驅(qū)動(dòng)。好處是復(fù)雜樣式的表達(dá)能力非常強(qiáng)壞處是初學(xué)階段需要多花點(diǎn)時(shí)間理解屬性體系。我自己的體會(huì)是一旦你習(xí)慣了 layout/paint 分離、表達(dá)式驅(qū)動(dòng)、feature-state 這套模式再回去用 Leaflet 會(huì)覺(jué)得表達(dá)能力受限。Mapbox 的線樣式本質(zhì)上是聲明式的渲染管線你描述什么樣 Conditions 下畫(huà)成什么樣剩下的交給渲染引擎這和傳統(tǒng)命令式繪圖有本質(zhì)區(qū)別。7. 實(shí)用技巧與個(gè)人經(jīng)驗(yàn)補(bǔ)充在收尾之前再分享幾個(gè)零散但非常實(shí)用的技巧都是我在實(shí)際項(xiàng)目中驗(yàn)證過(guò)、覺(jué)得值得寫(xiě)下來(lái)的。7.1 線條圖層的分層命名習(xí)慣圖層一多命名混亂是災(zāi)難。我自己的習(xí)慣是{業(yè)務(wù)}_{類型}_{用途}比如road_line_main、road_line_outline、metro_line_track。這樣在代碼里查找和維護(hù)都方便也方便其他同事接手。同一個(gè) source 的多層樣式之間用_main、_outline、_shadow這種后綴區(qū)分。7.2 在線的樣式調(diào)試工具M(jìn)apbox 官方提供的Mapbox Studio里可以可視化編輯樣式但它的樣式編輯器對(duì)表達(dá)式支持有限復(fù)雜的表達(dá)式仍然建議在代碼里維護(hù)。我更常用的調(diào)試方式是瀏覽器里開(kāi)著開(kāi)發(fā)者工具在 Console 里快速執(zhí)行map.setPaintProperty(...)反復(fù)調(diào)參顏色可以先用十六進(jìn)制調(diào)到滿意再固化到代碼里。這個(gè)實(shí)時(shí)調(diào)參的流程比改代碼刷新頁(yè)面高效太多。7.3 巧用 opacity 疊加實(shí)現(xiàn)霓虹發(fā)光效果線條發(fā)光的實(shí)現(xiàn)不復(fù)雜一個(gè)線寬較大、透明度較低的圖層作為光暈層疊在上面再畫(huà)一條線寬較小、高亮顏色的主圖層兩者共用同一 source。光暈層用line-blur適當(dāng)模糊不用單獨(dú)做漸變就能達(dá)到不錯(cuò)的視覺(jué)效果。// 光暈層 map.addLayer({ id: route-glow, type: line, source: route-data, paint: { line-color: #ff6b6b, line-width: 12, line-opacity: 0.3, line-blur: 4 } }); // 主圖層 map.addLayer({ id: route-main, type: line, source: route-data, paint: { line-color: #ff2d2d, line-width: 3 } });注意圖層順序光暈層先 add主圖層后 add這樣主圖層壓在光暈層上方。如果順序反了主圖層的顏色會(huì)蓋住光暈效果。7.4 千萬(wàn)別忽略 line-width 與 line-blur 的配合調(diào)line-blur時(shí)容易踩一個(gè)隱含邏輯blur 的值是像素但它是基于線寬繪制的紋理上做的。如果線寬只有 2pxblur 設(shè)成 20px那這條線會(huì)淡到幾乎看不見(jiàn)。我的經(jīng)驗(yàn)是blur 的值不要超過(guò) line-width 的 2 倍范圍否則調(diào)試時(shí)你會(huì)懷疑是不是透明度出了問(wèn)題。最后再說(shuō)一個(gè)個(gè)人體會(huì)。Mapbox 的線條樣式表看起來(lái)只是幾十個(gè)屬性但真正用好它考驗(yàn)的是你對(duì)數(shù)據(jù)與渲染分離這一模型的理解。很多人在入門(mén)時(shí)急著去記 API 名字我卻建議先把 GeoJSON 結(jié)構(gòu)和屬性表達(dá)式搞明白數(shù)據(jù)里有什么字段、每條線代表什么含義、希望視覺(jué)上如何區(qū)分這些想清楚之后paint 屬性寫(xiě)法水到渠成。如果遇到文檔里沒(méi)說(shuō)透的細(xì)節(jié)比如某個(gè)屬性和另一個(gè)屬性打架、某個(gè)效果在不同縮放級(jí)別表現(xiàn)不一致別怕多試。拿一條簡(jiǎn)單的測(cè)試線把可能的組合都調(diào)一遍比翻半天文檔更高效。你現(xiàn)在手上有項(xiàng)目的話挑一段真實(shí)路線數(shù)據(jù)把這篇文章里的配置依次鋪上去很快就能摸清 Mapbox 線條樣式的脾氣。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美日动态视频| 99国产在线 精品 视频| 男人的天堂在线2| 天天操人人操狠狠插| 亚洲少妇综合| 成人精品久久| 超碰偷拍| 激情综合网一盗摄| 刺激性视频黄页| 日韩精品永久在线观看| 99色热| 国产极品粉嫩馒头一线天av| 91亚洲丝袜熟女| 伦理弟一页| 国产伊人自拍| 激情丁香五月婷婷| 天天综合网站| 久久国产精品91| 天天干天天干天天| 午夜欧美女人操逼| 极品美女福利在线观看| heyZO天然素人无码AⅤ专区| 91被操| 欧美精品黑人猛交高潮| 久久久性少妇| 丝袜加勒比| 91n免费处女| 大香网伊人久久综合网eew| 野狼激情网| 久久XX| 国产精品熟女丝袜一区二区| 日韩一级特黄av毛片| 无码一区免费在线不卡| 亚洲麻豆av一区二区| 鸥美中出| 国产av激情无码久久天堂| 日韩欧美亚洲自拍偷拍| 玖草在线视频| 亚洲av噜噜噜噜噜噜| 日韩猛交| 少妇一级婬片免费放一级a性色.| 中国少妇XXXX做受| 波多野结衣先锋影音| 91人精品妻入口| 激情五月综合开心五月| 伊人精品久久网站| 91干熟女| 可以免费观看的AV| 久久av色| 久久精品一区二区| 久久久麻豆精品| 日韩一级片在线看| 久久精品视频28| 青青草伊人久久| 四虎免费看黄| 亚洲 无码 偷拍| 在线岛| 艹比视频国产精品| 婷婷五月丁香五月| 屌妞视频久久久久久久久久久久| 久久久男人的天堂| 国产少妇内射| av影片在线观看不卡| 一起草三级AV电影在线观看 | 伊人丁香五月婷婷| 玖玖资源综合在线视频| 综合国产97| 蜜臀AV成人精品蜜臀AV久久| 美女丝袜激情小说| 超碰美女97| 亚洲熟女综合一区二区| 成人福利视频网| 日韩一区二区精品视频| 久久久久9999妇女| 99999亚洲另类| 7777奇米影视久久| 99超级碰免费视频| 天天综合网91入口| 亚洲图片小说欧洲| 亚一综合久久久久久久久久| 长长久久免费视频| 综合97久久| 久久久97| 狠狠狠狠狠狠| 青青草无码视频| 超碰97亚洲| 午夜爽爽爽在线观看永久入口姬片| 男人的天堂亚洲| 成人久久精品| 国产在线综合福利网站| 久久五月综合| 亚洲日本天堂| 日韩在线性爱免费视频| 91色艳| 91久热| 另类TS人妖一区二区三区 | 欧美狠狠狠| 欧美性爱日韩高清| 操淫穴亚洲五月丁香| 天美传媒麻豆一区二区三区国产精| 99婷婷一区二区| 日韩成人大片一区二区| 亚洲有码第一页| 78超碰| 国产精品婬乱一级毛片彝族| 欧美乱妇狂野欧美在线视频| 国产精品毛片?v一区二区三区| 又黄又爽在线观看视频| 亚洲 日本 不卡| 国产亚洲精品第一最新| 好屌色综合| 欧美精品二区视频在线| 少妇毛片久久| 美女91网站| 午夜婷婷| 999热这里只有精品| 亚洲国产成人福利在线观看| 新精精品久久精品| 国产乱色国产精品免费视| 日韩精品三区四区| 国产精品网址| 天天躁狠狠躁av| 亚洲成熟国产精品美女| 91天堂丝袜美腿| 成人乱码一区二区三少妇| 日韩一级二级三级免费看完整版国语版 | 久操91视频| 久热久一区二区三区| 亚洲色人| 夜夜嗷嗷一区二区| 牛黄色久午久| 四虎av在线| 东京热亚洲一区二区| 超碰久超碰久| 国产不卡片| 国产福利合集| 91夜色chaopeng| 欧美日韩日产免费网站看| 日本不卡二三区| 亚洲系列第一页| 99re在线视频| 免费精品无码一级毛片牛牛影视| 少妇三P| 72av视频| 97久精品| 思思热国产在线视频| 精品视频一区二区| 热热色AV| 大香蕉啪啪啪啪在线| 久久久精选| 夜夜嗨绯色| 国产www色在线观看| 熟女91网| 中文字幕视频在线观看一区二区| 女欧美一区二三区| 9精品久久久久| 日本99热| 亚洲精品尤物yw在线影院| 久偷拍欧美日韩三区| 岛国黄色大片网站| jizz啪啪| 欧美亚洲中文字幕| 日本黄色裸日本黄色裸体| 成年人性爱日韩| 熟妇色99| 欧美另类丝袜熟女| 9精品在线| 少妇超碰在线| 色噜噜精品一区二区三| 日本一级特级毛片视频| …中文字幕亚洲乱,97人妻无码费视… | 一道α片欧美| 九九九九热| 都市激情人妻一区二区青青操视频 | 五月天激情小说网| AA特级绝黄| 天天网综合| 亚洲欧美91√| 九九九久久久久| 99综合网| 欧美麻豆成人同性GⅤ在线| 日本不卡五区| 精品视频一区二区| 欧美暴力猛交| 蜜色网色哟哟| 中文有码第五页| 99久久精品国产高潮| 无码高清操逼| 日本熟女不卡视频| 日韩啊V| 人人操人人精品影片| 天天享受天天看| 丁香六月婷婷| 天天日夜夜爽| 狠狠狠狠狠狠| 97天天摸天天碰| 日本一级性爱| 国产亚洲精品美女久久久m| 26uuu成人影片| 99re视频这里只有精品| 精品久久久一本一道| 蜜臀久久久| 超碰 另类 欧美 | 人妻丰满熟妇av无码区蜜桃| 国产嫩草精品A88AV| 亚欧美综合| 九九九九精品一区| 97视频新免费| 久久亚洲日韩国产欧| 欧美中文狠| 一区二区蜜臀| 99精品丰满人妻无码| 超碰天天久久79| 欧美亚男人的天堂| 婷婷情色五月天| 91色五月俺来也| 欧美色66| 亚洲图片 激情小说| 婷婷五月天无码 | 日韩精彩免费| 91亚州欧美| a人欧美综合天堂麻豆| 性色中出| 一区二区无码视频| 高清孕妇孕交 交| 99re超碰| 日韩欧美午夜一区二区| 久久久久人妻二区精品叶可怜| 伊人久久综合影院精品久久久 | 中文字幕55555| 日本操逼视频在线| 亚洲,欧美,综合网| 国产精品一区二区久久精品| 亚洲资源站| 精品十八在线观看| 亚洲最新Av| 国产一区二区三三视频| 伊人激情五月天一区二区| 激情五月天社区| 九月婷婷| av东京热男人的天堂| 黄色十八禁| 精品免费囯产一区二区三区| 夜草网站| 狼人久草| 久久综合超碰| 日韩人妻无码不卡网站| 影音先锋每日最新资源在线观看| 久久人人爽人人爽人人片Ⅴ| 麻豆乱码久久精| 国产女人9999| 香蕉视频精品亚洲一区二区三区在线播| 黄色无码高清黄色无码网站| 91在线精品| 一区二区三区在线资源| 日韩欧亚中文在线| 友优传媒精品在线一区二区| 色噜噜精品一区二区三| 蜜臀少妇一区二区| 欧美日韩国产人人| 精品无码欧美三级| 探花精品视频| 经典丝袜一区| 婷婷av在线中文字幕| 欧美一级A片在线看视频性色| 麻豆天美久久91| 懂色av中文字幕一区二区三区天美| 60秒不遮不挡| 日韩午夜精品一区二区三区电影| 色女网日韩| 免费男人的天堂| 人妻干天天| 日本一本一区二区三区四区五区欧美日韩中文字幕| 精品一区二区三区四区外站 | 翔田千里av一区二区三区| 日本一二区免费| 2020中文字幕在线| 在线A日本| 亚洲天堂性爱| 中文字幕一二三| 国产精品视频精品一二| 97操综合| 天天日B夜夜干B时时操B| 天天综和| 欧洲性爱无码区| 五月婷视频| 四虎精品一区| 久久久久久久久久8888| 精品二区三四区五电影| 日本性爱网址| 大香蕉中文网| 亚洲欧洲另类| 97欧美视频| 二色av| 久久久9 9 9精品| 久草国产在线视频| 小明看看网址| aaaa黄片| 亚洲高清欧美总合| 国产剧情一区在线观看| 91九色丨风韵犹存| 动漫片子网站3黄| 97香蕉网| 国产日韩精品一区二区三区| 明星性猛交ⅹxxx乱大交| 国内91熟女人妻丝袜天天精品视频在线| 玖玖大干人妻| 97二区四区| 国产亚洲色婷婷久久99精品91 - 百度| 九九久久九九久久| 大学生美女口爆| 91色综合激情| 精品国产www久久| 久久久久九九九九九| 久久99精品视频| 亚洲高清欧美总合| 久久五月份| V A在线| 久久神马影院| 欧美成人性爱视频大全| 丰满人妻-区二区三区免费看| 99综合免费视频| 美女91在线| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 中文字幕久热视频在线| 国产人妻精品一区二区三区秋霞| 婷婷五月天丁香花| 伊人网免费视频| 级品肉射| 天美国产精品| 国产综合永久精品日韩鬼片| 超碰99在线| 亚洲美欧999| 婷婷深爱五月| 国产真乱mangent| 亚洲91射| 综合久欧洲| a v网站在线播放| 中国91AV| 少妇内射www在线观看视频| 亚洲日本韩国在线| 国产对白刺激视频| 欧美在线电影| 天美传媒Av在线| 九九99精品| 人人操 欧美| 天天综合站| 绑缚麻绳人妻寝取完整版| 国产成人无码网站在线视频| 91色人妻| 91丨人妻丨国产丨丝袜| 久湿久久| 操人妻逼91| 综合色99| aaaa少妇高潮大片| 中文人妻av高清一区| 91n处女在线观看| 在线观看视频91| 思思99热| 韩国一区二区精品亚洲| 国产乱码精品一区二区三区四川| 911av网站免费观看| 一本久道久久综合狠狠爱一密臀精| 丁香五月天久久精品视频一区二区三区| 国产亚洲国产超碰| 日韩精品亚洲专区在线影视| 美女视频尤物网在线看| 久久性爱视频99| 啊啊啊啊嗯嗯在线久久久| 欧美 日韩 另类 亚洲| 五月天黄色av| 女优免费一区二区永久| 日韩人妻精品久久久久| 五月天婷婷色色| 久久久精品视频免费观看| 9国产超碰| 9国产超碰| 91啦人妻| 香港澳门日本三级网站| 久久产精品一区二区三区电影| 97精品全部| 青青草AV色| 激情小说亚洲图片| 男人的天堂在线| 最新av在线| 久久久性爱视频| av在线人气| 午夜天堂网| 美国久久一二三四| 欧美激情久久久久| 无卡一区=区| 久久美国毛片| 97色香蕉| 日本韩国国产精品一区| 亚一综合久久久久久久久久| 亞洲久久直播| 黑丝少妇在线观看| 六月丁操逼| 美女主播色欲91抠b在线播放| 日韩精品高清资源在线| 啊啊啊啊在线观看网址| 欲香欲色天天天综合和网| 久久伊人青青草| 欧美人人天天网| 超碰一区二区| 少妇无码999| 特色a在线上| 久久精品一区二区一8| 免费啪啪av| 凸凹视频在线观看| 天天干,夜夜爽| 久久久久日本视| 97硬碰| 精品久久九| 青青草原成人| 国产精品福利资源在线尤物| 搡老女人老妇女AAA一VU麻豆| 日本日逼高清| 精品一区二区三区蜜桃臀赵总 | AV和黑人在线播放| 美女被艹尤物视频| 天天综合精品| 在线情色电影 91大 | 日本女优在线视频福利| 丁香五月社区| 99蜜桃臀亚洲成人在线观看| 大香蕉久久| 国产精品一级特黄aaa大片在线观看| 亚洲综合中文字幕有码| 中文字幕av久久爽Av| 91网站在线播放| 精品人妻av区天天看片| 能在线播放的国产三级| 夜夜操天| 国产伊人精品在线| 欧美成人A天堂片在线观看| 国产CHASE男男GAYGA 毛多色婷婷| 男人的天堂2010| 色网在线| 日本韩国国产精品一区| 小少妇| 中文字幕精品三级久久久| 精品欧美老熟女一二区| 亚洲最大无码中文字幕网站| 96免费视频在线| 亚洲人综合19| av资源在线观看少妇| 欧美 日韩 国产传媒| 亚洲 欧美 色图| 免费看A片毛毛片在线播| 91在线限制级| 天美传媒精品一区二区| 色官网在线| 蜜屁Av| 综合影院永久入口国产| 欧美另类色| 伊色久人大在线| 加勒比在线视频一区二区三区| 成人日本精品九区| 屁股久久久久久| 色官网在线| 操死我了啊啊啊| 亚洲国产精品有声| 夜精品久无码| 大香焦A片| 日韩精品熟妇| 日日操免费视频| 夜夜高潮夜夜爽| 97爱爱爱| 国产污视频麻豆传媒一区二区| 久久色网| 麻豆福利视频导航| 亚洲AV无码秘 蜜桃臀国精产品| 日韩三级视频一区二区三区| 久久色精品视频在线| 香蕉久久国产AV一区二区| 欧美后入式| 性爱1区| 夜夜精品视频一区二区| 日韩性爱高清免费视频| 国产91美女视频| 丁香五月影院| 国产h小视频在线观看免费| 色999人与兽| 亚洲婷婷丁香在线| 亚洲免费97免费| 亚洲三区视频| 91精品91久久久久77777| 免费综合亚洲中文| 另类图片天天影视| 日本少妇va7777| 日本一区二区三区午夜观看| 亚洲涩涩| 2024人人操人人摸| 亚洲精品久久久久久久蜜桃臀| 色噜噜国产在线| 9丨亚洲一区二区在线| 精品二999| 欧亚在线视频| 天天看天天日天天操| 91国产大片| 精品人妻美妇91job| 天堂成人网| 99热精品青草在线| 国产极品美女高潮无套在线观看 | 日本 欧美 国产一区| 亚洲人综合19| 日本不卡二三区| 国产农村一一级特黄毛片| 国产400孕妇孕交群| 日本一区二区三区精品| 黄色大香焦1级‘′‘| 操久久久久| 夜夜操91744565| 国产三区免费在线观看| 五月丁香黄色网| 男人天堂网手机版婷婷| 韩国轻伦国内自拍一区| 91干熟女| 国产精品嫩草久久久久| 九久9精品| 人妻黑丝袜电影| 国产黄a三级三级三级av在线看 | 久久久成人免费av电影| 韩国轻伦国内自拍一区| 日本黄 R色 成 人网站| 天堂俺去俺来也www久久婷婷| 超碰吊日色| 日韩人妻精品中文字幕| 人夜夜精品网站香蕉嫩草| 郑州宾馆老熟女露脸啪啪| 欧美牲| 色九九九九九九| 草久久久| ,国产乱人伦精品一区二区三区| 日本人人操人人操| 操逼片国产| 欧美影院一区二区三区| 亚洲精品少妇| a啊啊啊啊啊啊啊啊一区二区| 亚洲欧美一区二区不卡视频播放| 玖玖综合.com| 亚洲久热| 美日韩成人| 艹比视频国产精品| 久久精品中文字幕观看| 国产一区自拍欧美日韩| 国产一国产一级毛片古装| 亚洲无码一区成人免费午夜| 欧美特黄视频网站| 嗯嗯啊啊的视频| 亚热日本熟女| av72网| 精品国产72| 天天综合网久久ww| 成人熟女视频一区二区三区| 国产剧情一区在线观看| 国产精品一二三区福利| 凹凸视频特色日本特黄| 婷婷伊人綜合中文字幕| AV电影在线播放| 国产精品久久久鸭无码的功能| 国产男人又猛又粗又爽| 玖玖玖玖精品国产剧情| 国产美女mm131爽爽爽爽| 国产精品无码av在线| 黄色AAAAA欧美| 岛国网址国产| 亚洲av无线观看| 亚洲精品国产精品乱码不99| 99操99| 天天干,天天日| 开心激情婷婷| 男女打扑克高清网站| 亚洲精品 大香蕉| 91青视频| 伦在线97| 亚洲天堂电影网99999| 欧美亚洲特P| 亚洲欧美色图片| 人人做天天爱| 久精品无码av一区二免费国产在线观看| 人妻日日干| 中文字幕 人妻不满 在线视频| 99这里只有精品| 熟女一区二区| 色拍偷亚洲| 亚洲性高潮| www熟女乱伦com| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 嫩草91| 五月天伊人网| 91搞逼视频| 最近的最新的中文字幕视频| 在线观看十八禁| 亚洲精品国产精品乱码不卡| 超碰在线成人电影| 亚洲阿v天堂在线| 深夜国产一区二区三区在线看| 9久久精品| 久久AV无码1区2区3区| 人人摸人人舔一区二区| 国产激情视频一区区三区| 18禁无码永久免费无限制| 香蕉人人操tv| 久草资源在线视频官方总站日韩丝袜美腿 | 欧美三级免费伊人| 超碰社区97| 免费看片黄| 日本黄 R色 成 人网站| 密臀AV在线| 粉嫩AV一区二区夜夜| 久久性爱精品一区| 夜夜爽77777| 97在线资源| 中文AV制服乱伦| 四虎影院成年人片| 撸撸成人在线视频| 香蕉视频欧美一卡二卡| 久久一区二区三区入口| 二对二中文字幕。| 麻豆天美一区二区| 亚洲经典啪啪| 97在线青| 变态乱伦伪娘灌肠一区二区| 五月天黄色av| 亚洲色婷婷综合久久久久中文| 一类无码操逼视频| 黑人中出21连凳花野真衣| 97色操| 日韩欧美午夜视频在线| 人妻社区男人天堂| 2020久久免费视频| 亚洲成人av色网| 色网亚洲人| 操高情无码| 欧美日动态视频| 国产真乱mangent| 亚洲综合春色| 欧亚日韩一区在线| 中文字幕第页| 久草免费在线视频| 婷婷操逼| 亚洲AV色图| 激情av| 97操碰| 激情五月天丁香社区| 国产高清在线自在拍69| 亚洲欧美在线观看2021| a片亚洲一本通视频| 欧美日韩大黄片| 午夜精品久久久久| 最新av中文字幕高清| 亚洲色图 欧美热图 清纯唯美 另类自拍| 欧美+日产+中文| 欧美另类色图片| 91国模| 一区二区三区 丝袜 高跟 美腿| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 人人操我人人干| 亚州色站 日韩电影| 操逼无码操逼| 天天操人人操骚逼网站| 玖玖爱免费观看视频| 九九久精品| 九九色热| 曰韩中文人妻视频| 天天做天天爱天天爽AV| 约操熟妇| 久久青娱乐| 久久精品欧美一区蜜桃| 中文字幕高清精品一区| 伦理弟一页| 国产激情在线观看| 91 丝袜在线播放| 久久久久一本一区二区青青蜜月| 午夜福利激情在线视频| 麻豆区久久久久亚| 无码99| 色哟哟 日韩精品| 精品久久大胆人体| 日韩婷婷| 波多野结衣AV无码一区| 亚洲综合 欧美| 91美女中出| 欧美日韩黄片精品在线| 久超碰这里只有精品| 亚洲精品丝袜-不卡成人免费……| 色欲天天综合久久久无码网中文| 欧美熟女妇同| 国产成人综合网| J?P?NESEHD熟女熟妇伦| 秋霞福利网| 久久久久久久久久9| 人人天天干干| 精品传媒在线一区| 久久天天躁日日躁狠狠躁| 亚洲国产麻豆一区二区三区| 97免费在线观看| 少妇人妻激情四射| 欧美综合骚| 午夜120视频在线观看| 综合 亚洲 欧美| 色天堂综合| 丁香激情五月| 亚洲毛片一级带毛片基地| 97天天摸天天爽| 涩涩久久精品| 日韩AV色图| 99热99色| 艹比视频国产精品| CCYY草草影院地址入口| 久久久天堂| 人人搡人人肉久久精品| 97中文天堂| 国产高潮AA片免费看| 一起草日韩| 国产精品不卡av免费在线观看| 蜜臀99久久精品| 99精品人人爽| 99热精品国产| 国产精品久久久视频| 99人人干| 5月婷婷6月六月丁香| 天天谢天天干| 日本高清视频xxxx| 天美传媒精品一区二区| 日韩精品午夜操呦呦不卡影院| 91久久国外网| 欧美日动态视频| 欧美激情欧美精品| 在线人妻熟女一区二区三区四区五区| 啪啪啪综合网| 色综合色色| 一区二区三区欧美激情| 亚洲欧美日韩精品久久久一区二区| 精品人妻1区| 乱伦日本中文自拍| 不卡av免费在线网址| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 97干com| 一级黄色影片| 婷婷大香蕉| 亚洲人妻AV| 97人人草| 丰满欧美少妇| 亚洲AV无码天美传媒一区| 95人妻爽爽人人做人人澡| 九九Av| 久久精品国产精品亚洲艾通辽熟妇| 亚洲精品亚洲人成人网| www久久久| 五月天丁香| 午夜精品一区二区三区三上悠亚| 国产刺激视频| 精品人妻一区二区三区-国产| 偷拍欧美激情| 欧美一二在线| 嗯,啊。舔我逼| 人妻大香蕉| 国产sv美女内射| 91丝袜在线观看| 一级做a爰片性色毛片久久| 91搞逼视频| 亚洲中文日韩欧美大香蕉视频| 黑人无码一区二区| 成人精品在线| 九九九综合精品| 自拍欧美| 久久久九| 中文字幕三四区| 一区操逼| 国产精品秘 福利姬在线观看| 亚洲操操操| 91jk色拍| 欧美日韩精品久久久久东北老熟妇| 亚洲人妻精品一区二区| 欧美日韩午夜精品一区二区三区| 十八禁的黄污污免费网站| 欧美刺激色黄片免费看| 中文啪啪视频| 丁香婷婷激情五月天无毒不卡| 色香综合天天影视综合| 99re久久| 欧美少妇性爱网站| 91大胆欧美| 黑人精品久久97| 超碰人妻久久| 午夜一区二区三区国产| 日本狠狠干| 亚洲综合图色在线| 欧美色性情| 手机在线播放国产福利| 五月婷婷影院| 啊啊啊啊啊好舒服视频| 亚洲国产综合图区中文字幕 | 天天爽天天| 久久夜夜夜| 免费视频一二三区| 国产综合永久精品日韩鬼片| 盗摄 精品 另类 一区| 97国产色图 | 在线视频日韩欧美国产| 97玖玖超碰| juliaann欧美丝袜办公室| 八戒无码国产午夜福利| 中文字幕第页| 日本 情色 1区2区3区| 中文?日韩?免费?精品| 久久这里只精品99re66图| 久久有码| 天美91| 99爱爱| 天天操天天日青青草超碰av| 久久精品国产亚洲5555| 9+1视频网址| 精品无码一区二区人妻久久蜜桃| 亚洲**2021在线观看| 另类小说五月天| 欧美在线视频播放| 日本高清免费一本视频在线观看| 丁香五月性| 成人一级二级| 欧美精品成人在线播放| 校园春色欧美色图| 久久黄人人爽视频| 久久久久9| 久久久久96| 黄色一区二区秘书性感| 久久亚洲熟妇在线视频| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 凹凸视频特色日本特黄| 黄色av播放免不| 欧洲成人性爱视频| 国产精品久久久久久久久久久久久久久久久久| 极品另类| 夜夜夜久久| 亚洲色图欧美色图另类图片| 国产成人网址| 亚洲 日本 不卡| 成人av动漫在线观看| 亚洲精品人伦一区二区| 一区二区三区免费岛国片| 欧美综合 站| 国产一级不卡在线观看| 91久久国外网| 99久久久无码国产精品性男| 午夜精品久久久久久久| 天天日B夜夜干B时时操B| 男人的天堂久久狠| 久久久精品无码亚免费| 91熟女少妇| 色五月激情综合网| 就去色综合| 丰满人妻-区二区三区免费| 78操B| 91在线视频免费中出| 一道α片欧美| 是还免费视频1727我| 日韩三级天堂在线观看| 91热热色| 亚洲天堂性爱| 亚洲欧洲自拍图片专区满春格| 99色婷婷中文字幕乱色| 操逼不卡中文字幕| 欧美亚洲特P| 欧美日韩国产传媒在线精品| 欧美欧美啪啪视频| 日韩不卡网操逼中文字幕日韩| 可以免费观看的日韩av毛片| 97久久超碰日韩精品| 成年女人一区| 国产亚洲精品农村妇女| 欧美丝袜91| 国产免费大片| 岛国视频免费在线观看| 国产白丝网站| 91天堂视频| 爱av免费| 日日夜夜精品视频| 91国产美女丝袜足交精品视频| 8050无码八戒| 999久久久免费精品国产牛牛| 超碰1024久久| 超碰在线成人| 日韩成人在线性爱视频| 天天爽入口| 久久超碰、| 26uuu国产免费观看| 免费精品无码一级毛片牛牛影视| 色男人色天堂东京热| 天天干美少妇一区| 18禁美女裸体无遮挡啪啪| 人人操人人肉久久精品| 超碰碰激情97+久| 丁香五月av| 国产一级不卡在线观看| 国产女人视频三四五区| 加勒比五月天| 蜜臀av中字字幕网站| 国产亚洲禁久一区二区| 激情熟女12P| 欧美天天综合在线| 97在线资源| 校园春色欧美色图| 五月丁香网站| 黄片无码在线制服| 99re免费视频精品全部| 3P丝袜熟女 色综合| 无码人妻系列少妇| 大香蕉欧美伊| 97人肏| 狠狠色综合网| 黄片aaaaa一区| 99亚洲国产精品色一区二区三区| 大香蕉淫人| 热热色国产一二区AV| 日日黄色三级网站| 有码免费观看| 中文字幕一区av| 久久艹逼视频| 人妻日日干| 亚洲国产一区二区入口| 日韩免费簧片| 中文字幕国产在线天堂| 男人的天堂com| 久久久国产护士丝袜美腿一| 日韩天天本| 综合天天网| 一区麻豆 高清中文字幕| 亚洲,欧美,春色,另类| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美精品日韩久久久九| 伊人久久综合影院精品久久久| 亚洲 暴爽 AV人人爽日日碰| 天天影视亚洲| 丝袜 中出 制服 人妻 美腿 中文字幕| 福利大香蕉| 超碰日韩美妻| 色网1| 亚洲综合贴图91| 9长久久精品| 亚洲成人色情五月天丁香花| 歐美性天天| 欧美大片天天看| 久久久久久久久久久久久久久久9| 97天天综合网| 熟妇人妻一区二区三在线| 天堂在线一区二区| 金典av| 亚州图片第一页| 久久精品国产97欧美精品亚洲 | 美国一区二区免费视频| 手机在线视频国内精品| 美国aaaaa一级黄片| 无码抄逼网| 精品人妻伦一二三区久久| 女优视频第10页| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 熟妇激情| 日日玩天天干| 友优传媒精品在线一区二区| 91视频综合网| 国产精品视频自拍在线| 操逼www.| 婷婷五月天久久久| 91久青| 一区二区视频你懂的| 大屁股国产在线视频| 麻豆一区二区AV天美| 日本一二区不卡| a片在线播放| 亚洲αv一区二区三区| 久久精品性| 中文字幕91综合| 亚洲天堂日本| 97亚洲色图| 熟妇xxxxx性春色| 人人做人人妻人人夜视频| 丁香六月婷| 亚洲永久永久永久永久一级一级一级精品 | 亭亭在线资源| 91精品网站| 国产日韩欧美中文在线播放| 男女一级A片大黄,一进一出| 久久久一热在线播放| 欧洲小说色图视频另类| 五月天婷婷社区| 国产在线能看的你懂的| JIZZJIZZ国产精品喷水| 色综合美国| 插入粉嫩少妇视频| 成人毛片免费| 国产在线精品偷| 天天综合网久久ww| 精品少妇一区二区| 无码精品久久| www99热| 久久国语| 在线视频亚洲无码| 国产综合操逼高清| 夜夜騷av、一區二區| 男人天堂2019| 美国aaaaa一级黄片| 无码91| 久久大香蕉97| 日本一级婬片试看三分钟| 久久精品人体| 久肏视频字幕| 日本操大逼| 一区二区三区四区五区高清无码永久视频 | 久久久久斤小| 欧美夜夜草视频| 五月天丁香| 国产亚洲精品av一区| 久久久久久久久久久人妻| 91痴汉| 亚洲精品aa久久伊人 | 自拍偷拍国产欧美日韩韩| 99热这里只有精品99| 欧美中字不卡| 99re国产精品视频| 夜夜狼人妻| 另类图片综合| 欧美午夜精品久久久久久3D| 亚洲成人AB| 竹菊影视国产一区二区| 欧美玖玖爱免费玖玖| 香蕉黄色一级视频| 日少妇亚洲版| 成年人网站在线免费观看| 91国产精品在线看| 91白嫩| 午夜天堂精品久久久久91| 中文字幕欧美精品亚洲日韩蜜臀| 超碰成人最新最好看| 亚洲Av噜噜一区二区三区妖精| 丁香婷婷五月| 熟妇视频一区二区三区在线观看| 蜜臀99久久| 蜜臀久久久久久999| 精品欧美乱码久| 五月天丁香| 后入国产| www.97在线| 2024黄色视频| 亚洲天堂另类小说男人| 成人精品在线免费视频| 亚洲不卡不卡中文字幕不卡| 啊啊啊好想要| 二区熟妇韩日| 日韩在线欧美精品一区二区| 成人色女网| 少妇人妻好深太紧了vr91| 撸撸成人在线视频| av网站在线观看了| 粉嫩小泬久久久一区二区| 2019天天干天天操| 9997se| 色婷婷亚洲婷婷| 亚洲欧美日韩激情不卡| 九九久久久九九| 男女日B国产| 啊啊啊久久久视频| 日韩精品一区二区三区色欲| 啪啪啪综合| 亚洲人成色9999精品久久| 日韩有码 一区二区三区| 曰本熟女视频| 亚洲乱码国产乱码精网站| 日本幼女18+| 十八禁网站在线| 欧美一区二区三区四区综合| 69久久久久久久久久久久久| 亚洲欧美精品福利在线| 亚洲Av诱惑| 2019天天操天天爽天天拍| 丝袜熟女一区二区三区| 怡红院久久老司机| 欧美熟妇视频 | 91久久18禁| 国产精品蜜乳AV| 抽插亚洲无码| 大香蕉欧美伊| 中国探花熟女| 亚洲综合欧美| 91AV天美在线视频| 国产精品交换一区二区| 亚洲成aⅴ人片不卡无码| 中文字幕在线观看丝袜| 99操逼| 性色国产东北露脸精品视频| 国产九九九九九九九九| 91中文字幕| 欧美第二页午夜| 五月婷婷影院| 国产无马视频| 亚洲av噜噜噜噜噜噜| 欧美高潮| 黄色小说亚洲| 99热啪啪| 亚洲国产婷婷在线播放| 91综合网站| 夜夜爽夜夜摸夜夜操免费视频| 婷婷伊人一区| 国产福利精品最新在线| 青青免费在线视频一区 | 欧洲成人性爱视频| 亚洲图片另类| 熟女91网| 97超碰资源网| 蜜桃精品一区二区三区ww| 色色色色电影网| 艹精品| av网站国产主播在线| 久久岛国| 色偷偷2020免费视频播放| 欧州激情视频在线一区二区| 红杏大香蕉| av婷婷色婷婷色六月| 亚洲成人在线高清| 麻豆精品一区二区三区四区免费观看| 哑洲在线| 啊嗯嗯啊好大好爽| 精久久久91| 国产精品乱人伊人网| 婷婷五月丁香五月| 欧美精品久久久久久久久88| 亚洲一区二区三区中文字幕| 91AV入口| 色哟哟 日韩精品| 超碰97人妻在线| 日韩97在线| 久久老熟女| 超碰人人干天天射| 亚洲影视高清第一页| 亚洲一区亚洲天堂| 日夜干射色啊| 亚洲天堂自拍| 蜜桃在线观看一区二区三区| 九九热免费国产视频婷婷伊人五月 | 亚州春色| 亚洲黄日韩无码专区| 爱干爱射网啊啊啊| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲资源网| 乱伦系列一区二区| 欧美人妻久久精品二区三区| 能在线播放的国产三级| 国产成人自拍视频视频| 日韩精品资源专区二区| 亚洲啪啪综合?v一区综合精品区| 一区二区三| dy888午夜老子影视达达兔| 国产精品熟女一区二区三区| 嗯嗯啊好爽| 精品一级毛片在线观看| 91色人妻| 美女视频尤物网在线看| 国产成年免费大片黄在线观看|