반응형
저번 geoserver 포스팅에서 부산시 연속 지적도 wms 레이어를 생성해서 openlayers에 연결하는 예제를 해보았다.
이번 포스팅에서는 불러온 wms레이어 각 벡터에 대한 속성 데이터를 가져오는 예제를 진행해볼 예정이다.
먼저 지난 포스팅에서 쓴 소스를 그대로 사용했다.
var source = new ol.source.XYZ({
url: 'http://xdworld.vworld.kr:8080/2d/Base/201802/{z}/{x}/{y}.png'
});
var viewLayer = new ol.layer.Tile({
source: source
});
var tileImg = new ol.layer.Tile({
visible: true,
source: new ol.source.TileWMS({
url: 'http://localhost:8080/geoserver/test/wms',
params: {
'FORMAT': 'image/png',
'VERSION': '1.1.1',
tiled: true,
"STYLES": '',
"LAYERS": 'test:AL_26_D002_20210617'
}
})
});
var view = new ol.View({
center: [14377556.389982047, 4186024.063626864],
zoom: 14,
});
var mapView = new ol.Map({
target: "map",
layers: [viewLayer, tileImg],
,
view: view
});
여기까지가 기본적인 브이월드 배경지도를 불러오는 소스였고 이제 맵 객체에 싱글클릭 이벤트를 추가해서 클릭한 좌표를 geoserver
request 요청해서 원하는 속성 데이터를 가져오는 소스를 추가하면 아래와 같다.
mapView.on('singleclick', function(evt) {
var view = mapView.getView();
var viewResolution = view.getResolution();
var source = tileImg.getSource();
var url = source.getFeatureInfoUrl(
evt.coordinate, viewResolution, view.getProjection(), {
'INFO_FORMAT': 'application/json',
'FEATURE_COUNT': 50
});
if (url) {
fetch(url).then(function(response) {
var jsonStr = response.text();
var jsonObj = JSON.parse(jsonStr);
console.log(jsonObj);
});
}
});
요청할 때 헤더 부분에 어떤 타입의 데이터를 가져올지 상황에 따라 다르게 명시해서 원하는 데이터를 받아오면 될 거 같다.
다음 포스팅에서는 cql 필터로 속성 데이터나 공간 쿼리를 통해 데이터를 가져오는 예제를 다뤄볼 예정이다.
반응형
'JS > Openlayers' 카테고리의 다른 글
Openlayers geoserver wms 레이어 불러오기 예제 (0) | 2021.06.23 |
---|---|
Openlayers polygon 면적 측정 예제 (2) | 2021.05.23 |
openlayers lineString으로 거리 측정 예제 (0) | 2021.05.22 |
Openlayers csv 공공데이터 읽어서 포인트 레이어 생성하기 (0) | 2021.05.16 |
Openlayers lineString 예제 (0) | 2021.05.16 |