티스토리 뷰
728x90
반응형
저의 경우,
오픈레이어스(openlayers)에서 이미지를 불러와 레이어를 만들어야 했습니다.
이미지를 출력해주는 WMS API에서 이미지와 함께 응답헤더에 특정 값들을 함께 전달해주고 있었어요.
오픈레이어스에서 이미지를 레이어로 만드려면, 아래와 같이 layer.Image(ImageStatic)을 사용하면되는데,
layer.Image는 응답헤더를 출력하는 기능을 제공하고 있지 않습니다.
var imageLayer = new ol.layer.Image({
source: new ol.source.ImageStatic({
url: '이미지API URL',
crossOrigin: '',
imageExtent: bounds,
projection: 'EPSG:5179'
});,
});
반응형
따라서, 이미지와 응답헤더를 함께 가져오도록 XMLHttpRequest를 사용합니다.
// 이미지 URL
var imageUrl = "";
// XMLHttpRequest를 사용하여 이미지 요청 및 응답 헤더 얻기
var xhr = new XMLHttpRequest();
xhr.open('GET', imageUrl, true);
xhr.responseType = 'blob';
xhr.onload = function() {
if (xhr.status === 200) {
// 응답 헤더 정보 출력
var headers = xhr.getAllResponseHeaders();
console.log('응답 헤더:', headers);
// 이미지 Blob을 지도에 추가
var blob = xhr.response;
var imageSource = new ol.source.ImageStatic({
url: URL.createObjectURL(blob),
crossOrigin: '',
imageExtent: bounds,
projection: 'EPSG:5179'
});
// OpenLayers 이미지 레이어 생성
var imageLayer = new ol.layer.Image({
source: imageSource,
opacity: 0.7
});
// 지도에 이미지 레이어 추가
map.addLayer(imageLayer);
} else {
console.error('이미지 요청 실패:', xhr.status);
}
};
xhr.send();
728x90
console.log를 통해 응답헤더를 출력해봅니다.
개발자도구에서 응답헤더가 정상적으로 출력되는 것을 확인할 수 있습니다.
원하는 응답헤더를 추가하고싶다면,
WMS API를 만들었던 자바 소스코드에 아래와 같이 헤더를 추가해주면 됩니다.
response.setHeader("name", value);
728x90
반응형
'프로그래밍 > Frontend' 카테고리의 다른 글
[openlayers] 지도 타일맵을 VWORLD로 변경하기 - 일반(Base), 위성(Satellite), 하이브리드(Hybrid) (13) | 2023.11.29 |
---|---|
[DataTables] ajax를 통해 동적 테이블 만든 뒤, CSV다운로드 가능하게 하는 방법 (3) | 2023.11.02 |
[mapboxGL] 지도타일 도로명, 건물명 등 한국어로 변환하기 (0) | 2023.07.07 |
VWORLD webGL 3D 지도 API 2.0 사용 - 1. 지도불러오기 (0) | 2023.06.02 |
[html/css] CSS로 타이핑 효과, 커서 효과 주는 방법 (0) | 2023.05.16 |
댓글