..

Openlayers Extent Multiple

문제

마커를 생성하거나 경로를 나타내었을 때, 화면에 맞게 줌과 센터를 조정하고 싶었다. getExtent() 메서드를 통해 feature 범위를 가져오고, fit() 메서드를 통해 범위에 맞게 줌과 센터를 조정할 수 있다.

문제는 경로를 나타낼 때 노드 레이어와 링크레이어, 마커 레이어가 따로 있기 때문에 1개(특정) 레이어의 feature 범위가 아닌, 여러 개 레이어의 feature 범위를 구하고 싶었다.

해결

특정 레이어

const extent = layer.getSource().getExtent();

map.getView().fit(extent);

여러 레이어

const extent = ol.extent.createEmpty();

for (const layer of layers) {
    ol.extent.extend(extent, layer.getSource().getExtent());
}

map.getView().fit(extent);

참고

https://stackoverflow.com/questions/30121024/openlayers-3-zoom-to-combined-extent