JMapViewer - 오픈스트리트 지도뷰어

2024. 1. 26. 10:18프로그래밍/GIS

728x90

오픈스트리트 맵 뷰어 - JMapViewer

 

몇년 전에 오픈스트리 맵(줄여서 OSM)을 보기 위한 툴인 JMapViewer를 소개 한 적이 있습니다.

구글맵이나 네이버, 카카오 맵 같은 경우에는 여러가지 복잡한(?) 절차가 존재하고 이런 절차가 싫고 실제 지도의 조작을 한 번 해보고 싶다면, 이 오픈스트리트 맵을 추천해 드립니다.

 

요즘 국가에서 제공하는 OpenAPI 와 붙혀보면 어떨까 하는 생각이 들어서, 다시 한번 알아보기로 했습니다.

오늘은 최신(?) JMapViewer 를 빌드해서 실행 해 보는 것을 목표로 합니다.

 

준비사항

우선 준비 할 사항은 다음과 같습니다.

 

이클립스 현재 버전

 

 

Eclipse Packages | The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source pro

514 MB 222,111 DOWNLOADS Tools for developers working with Java and Web applications, including a Java IDE, tools for JavaScript, TypeScript, JavaServer Pages and Faces, Yaml, Markdown, Web Services, JPA and Data Tools, Maven and Gradle, Git, and more. Cli

www.eclipse.org

 

JMapViewer 소스

 

eclipse-inst-jre-win64.exe
JMapViewer-master.zip
openjdk-17.0.2_windows-x64_bin.zip
openjdk-19.0.1_windows-x64_bin.zip
 

대충 설치하고 나면, 다음 모습이 될 듯 합니다.

...

 

JMapViewer 소스 추가

이클립스에서 자바 프로젝트를 생성하고, 다음과 같이 생성 해 보겠습니다.

 
사진 삭제

사진 설명을 입력하세요.

 

JMapViewer-master.zip를 압축을 풀고,

생성 된 프로젝트 안에 해당 소스를 추가 해 줍니다.

 

JMapViewer 실행

그냥 실행 할 수 없게 되어 있네요...

일단 module-info.java 를 다음과 같이 설정 해 주면, 오류는 없어 집니다.

module JMapViewer {
	requires java.base;
	requires java.desktop;
	requires java.logging;
}
 

그럼 다음과 같이 대충 JFrame 에 넣어서 OSMViewer 클래스를 만들 주도록 합니다.

package com.tobee.openstreetmap.viewer;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

import org.openstreetmap.gui.jmapviewer.JMapViewer;

public class OSMViewer {
	public static void main (String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JMapViewer jMapvwr = new JMapViewer();
                JFrame frame = new JFrame("OSM Viewer");
                frame.setSize(800, 600);
                frame.setContentPane(jMapvwr);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                    
                frame.setLocationRelativeTo(null);                
                frame.setVisible(true);
            }
        });
    }
}
 

그런다음, 이클립스에서 실행 해 봅니다.

 

다음과 같은 오류가 난다면, 분명히(?) 내부 사내망을 쓸 확률이 있을 것 같습니다.

내부에 있는 어떤 서버를 한번 더 통해서 외부 인터넷을 접근 할 확률이 있는 것이 아닐까 하고 생각 해 볼 수 있습니다.

Failed loading https://c.tile.openstreetmap.org/3/5/2.png:
class javax.net.ssl.SSLHandshakeException:
PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

 

위의 오류가 난다면, 다음 내용을 확인해 보시기 바랍니다.

 

 

SSLHandshakeException 관련 오류

이러한 오류 중에 다음과 같은 오류가 발생 했습니다. 이 오류는 openstreetmap 을 사용 하기 위해서 뷰어 ...

blog.naver.com

 

package com.tobee.osm.map.viewer;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

import org.openstreetmap.gui.jmapviewer.JMapViewer;

public class OSMViewer {
	public static void main (String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JMapViewer jMapvwr = new JMapViewer();
                JFrame frame = new JFrame("OSM Viewer");
                frame.setSize(800, 600);
                frame.setContentPane(jMapvwr);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                    
                frame.setLocationRelativeTo(null);                
                frame.setVisible(true);
            }
        });
    }
}
 

위의 코드를 실행해 본다면 다음과 같이 오픈스트리트 맵이 활성화 된 것을 볼 수가 있을 것입니다.

다음은 JMapViewer 내에 있는 Demo 클래스 입니다.

org.openstreetmap.gui.jmapviewer
 

그런데... 뭔가 이미지가 깨져 보이네요.

 

이상.

728x90