JS “클래스의 생성자는 비동기로 실행할 수 없다”에 대한 대처

자바스크립에서 클래스의 생성자는 비동기적으로 실행될 수 없다. 이에 대한 효과적이고 좋은 대처는 생성자 대신 static factory 패턴을 사용한다. 예를 들어서 생성자를 다음 코드로 대체한다.

class App {

...

  static async create() {
      const app = new App();
      await app._setupThreeJs();
      app._setupCamera();
      app._setupLight();
      app._setupControls();
      app._setupModel();
      app._setupEvents();
      return app;
  }

...

참고로 _setupThreeJs 매서드는 async로 선언되어 있다.

그리고 App 클래스의 객체를 생성할 때는 new App()이 아닌 다음 코드를 사용한다.

const app = await App.create();

와!

지오코딩 결과를 QGIS의 TMS for Korea 배경지도에 맵핑

지오서비스웹에서 지오코딩한 결과의 좌표계는 EPSG:4326이며 QGIS의 TMS for Korea를 통해 표시되는 배경지도 중 카카오맵은 EPSG:5181입니다. 비록 이 두개의 좌표계가 서로 다르지만 서로 중첩했을때 별도의 좌표계 변환 없이 올바른 위치에 표시됩니다.

아래는 그 결과입니다.

배경지도 표시를 위해 TMS for Korea 플러그인을 이용하였습니다.

정밀한 지오코딩 만들기 (편집 기능 활용)

지오서비스웹은 주소를 좌표로 변환하는 지오코딩 기능을 제공합니다. 이렇게 만들어진 지오코딩 결과 좌표를 보다 정밀하게 구성하기 위해 공간 데이터 편집 기능을 활용할 수 있는데요. 이에 대한 자세한 소개에 대한 영상입니다.

아래는 지오서비스웹의 전반적인 기능에 대한 메뉴얼입니다.

지오서비스웹(GEOSERVICE-WEB) 기능 별 메뉴얼