1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
// DefaultUriBuilderFactory中花括号是关键字,所以这里进行编码
String tileMatrixParam = URLEncoder.encode("EPSG:" + geoServerPublishDTO.getEpsg() + ":{z}", StandardCharsets.UTF_8);
String xParam = URLEncoder.encode("{x}", StandardCharsets.UTF_8);
String yParam = URLEncoder.encode("{y}", StandardCharsets.UTF_8);
URI uri = new DefaultUriBuilderFactory().builder()
.scheme(HttpSchemes.HTTP)
.host(dataServiceConfig.getLocalIp())
.port(context.getWebServer().getPort())
.path("/gwc/service/wmts/")
.queryParam("layer", geoServerPublishDTO.getTableLayerMap().get(0).getLayerName())
.queryParam("style", "")
.queryParam("tilematrixset", "EPSG:4326")
.queryParam("Service", "WMTS")
.queryParam("Request", "GetTile")
.queryParam("Version", "1.0.0")
.queryParam("Format", "image/png")
.queryParam("TileMatrix", tileMatrixParam)
.queryParam("TileCol", xParam)
.queryParam("TileRow", yParam)
.build();
// 由于大括号被编码了两次,这里需要解码两次
String templateUrl = URLDecoder.decode(URLDecoder.decode(uri.toString(), StandardCharsets.UTF_8));
geoServerPublishDTO.setTemplateUrl(templateUrl);
|