我來把你構造的這個 WMS GetFeatureInfo URL 逐個參數解釋一下,方便你理解:
http://127.0.0.1:8090/geoserver/xxxx/wms?
SERVICE=WMS&
VERSION=1.1.1&
REQUEST=GetFeatureInfo&
QUERY_LAYERS=loess:yourLayer&
LAYERS=loess:yourLayer&
STYLES=&
FORMAT=image/png&
TRANSPARENT=TRUE&
INFO_FORMAT=application/json&
TILED=true&
SRS=EPSG:4326&
BBOX=west,south,east,north&
WIDTH=xxx&
HEIGHT=xxx&
X=xxx&
Y=xxx
📌 參數說明
SERVICE=WMS
指定服務類型是 Web Map Service。
VERSION=1.1.1
使用的 WMS 協議版本。
WMS 1.1.1 → 用
SRS
,經緯度順序是lon,lat
。WMS 1.3.0 → 用
CRS
,經緯度順序是lat,lon
(EPSG:4326 時會反過來)。
REQUEST=GetFeatureInfo
請求類型,這里是查詢地圖某個像素點對應的要素信息。
其它常見請求:
GetMap
(取圖像)、GetCapabilities
(獲取服務元數據)。
QUERY_LAYERS=loess:yourLayer
指定要查詢的圖層(可以是一個或多個)。
必須與
LAYERS
里的一致。
LAYERS=loess:yourLayer
表示當前地圖請求的顯示圖層。
注意:
LAYERS
是告訴服務端當前渲染哪些圖層,而QUERY_LAYERS
是告訴服務端要在這些圖層里查屬性。
STYLES=
樣式,這里為空,表示使用默認樣式。
如果你在 GeoServer 里配置了 SLD,可以指定樣式名稱。
FORMAT=image/png
圖像輸出格式(雖然我們要的是屬性信息,但
GetFeatureInfo
必須基于一個GetMap
請求,仍需指定圖像格式)。
TRANSPARENT=TRUE
是否允許透明背景。
常用于疊加圖層。
INFO_FORMAT=application/json
屬性信息的輸出格式。
常見可選值:
text/plain
、text/html
、application/json
、application/vnd.ogc.gml
。推薦用
application/json
,方便前端解析。
TILED=true
表示請求的地圖是切片(tile)方式。
有些客戶端會加,有些可以不加。
SRS=EPSG:4326
指定空間參考坐標系。
EPSG:4326
→ WGS84 經緯度。需要與你的 GeoServer 發布的圖層坐標系一致。
BBOX=west,south,east,north
當前視圖的地理范圍(最小經度,最小緯度,最大經度,最大緯度)。
用來定義 “地圖圖像的空間范圍”。
WIDTH=xxx
/HEIGHT=xxx
請求圖像的寬度和高度(像素)。
X/Y
是基于這個寬高的像素位置。一定要和前端算
X/Y
的時候用的寬高一致。
X=xxx
/Y=xxx
用戶點擊位置對應的圖像像素坐標。
注意:這里不是屏幕坐標,而是相對于 BBOX 和 WIDTH/HEIGHT 計算出來的像素位置。
X=0
表示最左邊,X=WIDTH
表示最右邊;Y=0
表示最上邊,Y=HEIGHT
表示最下邊。
📝 小結
地圖范圍:
BBOX + SRS
地圖圖像大小:
WIDTH + HEIGHT
點擊位置:
X + Y
(相對圖像像素,而不是屏幕坐標)輸出控制:
INFO_FORMAT
(返回 JSON、HTML 或 GML)圖層控制:
LAYERS
(渲染),QUERY_LAYERS
(查詢)