모든 준비를 마쳤습니다!

개발을 시작하려면 개발자 문서로 이동하세요.

Google Maps Android API 활성화

개발을 시작하기 위해 Google Developers Console에서 우선적으로 해야 할 일을 몇 가지 소개하겠습니다.

  1. 프로젝트 생성 또는 선택
  2. Google Maps Android API 활성화
  3. 적합한 키 생성
계속

Google Maps Android GeoJSON 유틸리티

  1. 소개
  2. 지도에 GeoJsonLayer 추가
  3. GeoJsonLayer 제거
  4. GeoJsonFeature 추가 및 제거
  5. GeoJsonFeature 및 속성 액세스
  6. GeoJsonLayer 및 GeoJsonFeature 스타일 지정
  7. 데모 앱 보기

소개

GeoJSON은 JSON 데이터 형식의 확장으로, 지리적 데이터를 나타냅니다. 이 유틸리티를 사용하면 지리적 지형지물을 GeoJSON 형식으로 저장하고 지도 위에 계층으로 렌더링할 수 있습니다. 지도에서 GeoJSON 데이터를 추가/제거하려면 각각 addLayer()clearLayer()를 호출합니다. 마찬가지로 addFeature()removeFeature()를 호출하고 GeoJsonFeature 객체에 전달하여 개별 지형지물을 추가/제거할 수 있습니다. 지형지물에 액세스하려면 getFeatures()를 호출하고 계층에 추가된 모든 GeoJsonFeature 객체의 iterable을 가져옵니다.

또한, getDefaultPointStyle(), getDefaultLineStringStyle() 또는 getDefaultPolygonStyle()을 호출하고 각각에 스타일 옵션을 설정하여, 지형지물을 계층에 추가하기 전에 지형지물에 적용될 기본 스타일을 설정할 수 있습니다. 또는, 지형지물에서 setPointStyle(), setLineStringStyle() 또는 setPolygonStyle()을 호출하고 관련 스타일 객체에 전달하여 개별 GeoJsonFeature의 스타일을 설정할 수 있습니다.

지도에 GeoJsonLayer 추가

지도에 GeoJson 계층을 추가하려면 먼저 GeoJsonLayer 클래스의 인스턴스를 생성합니다. GeoJsonLayer를 인스턴스화하는 두 가지 방법이 있습니다.

JSONObject에서 가져올 경우 필요한 항목:

  • 계층을 렌더링할 GoogleMap 객체
  • 계층에 추가할 GeoJSON 데이터가 포함된 JSONObject
GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);

로컬 GeoJSON 파일에서 가져올 경우 필요한 항목:

  • 계층을 렌더링할 GoogleMap 객체
  • GeoJSON 데이터가 포함된 로컬 리소스 파일
  • 로컬 리소스 파일을 여는 데 필요한 Context 객체
GeoJsonLayer layer = new GeoJsonLayer(getMap(), R.raw.geoJsonFile,
getApplicationContext());

GeoJsonLayer를 생성한 후에 addLayer()를 호출하고 가져온 데이터를 지도에 추가합니다.

layer.addLayer();

GeoJsonLayer 제거

다음 계층을 추가했다고 가정합시다.

GeoJsonLayer layer = new GeoJsonLayer(getMap(), geoJsonData);

GeoJsonLayer를 제거하려면 clearLayer()를 호출합니다.

layer.clearLayer();

GeoJsonFeature 추가 및 제거

GeoJSON의 지형지물은 "feature" 유형을 가집니다. 기하학적 구조와 속성 멤버가 포함되고, 선택적으로 경계 상자나 id를 가집니다.

개별적으로 GeoJsonFeature 객체를 생성하고 GeoJsonLayer에 추가할 수 있습니다.

0, 0 지점이 포함되고 속성에 하나의 항목이 있고 경계 상자가 없는 지형지물을 생성했다고 가정합시다.

GeoJsonPoint point = new Point(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<String, String>();
properties.put(“Ocean”, “South Atlantic”);
GeoJsonFeature pointFeature = new GeoJsonFeature(point, “Origin”, properties, null);

계층에 지형지물을 추가하려면 addFeature()를 호출하고 지형지물에 전달하여 추가합니다.

layer.addFeature(pointFeature);

지형지물을 계층에 추가한 후에 제거하려면, removeFeature()를 호출하고 해당 지형지물에 전달하여 제거합니다.

layer.removeFeature(pointFeature);

GeoJsonFeature 및 속성 액세스

계층에 추가된 모든 GeoJsonFeature에 액세스하려면, 생성된 GeoJsonLayer에서 getFeatures()를 호출합니다. 아래와 같이 for-each 루프를 사용하여 액세스할 수 있는 GeoJsonFeatures의 iterable을 반환합니다.

for (GeoJsonFeature feature : layer.getFeatures()) {
  // do something to the feature
}

hasProperty()getProperty() 메서드를 getFeatures() 메서드와 함께 사용하여 각각의 저장된 지형지물에 특정한 속성이 있는지 확인하고, 있으면 해당 속성에 액세스합니다.

GeoJsonPoint point = new Point(new LatLng(0, 0));
HashMap<String, String> properties = new HashMap<String, String>();
properties.put(“Ocean”, “South Atlantic”);
GeoJsonFeature pointFeature = new GeoJsonFeature(point, “Origin”, properties, null);
for (GeoJsonFeature feature : layer.getFeatures()) {
  if (feature.hasProperty(“Ocean”)) {
    String oceanProperty = feature.getProperty(“Ocean”);
  }
}

GeoJsonLayer 및 GeoJsonFeature 스타일 지정

GeoJsonLayer의 기본 스타일을 설정하거나 계층에서 개별 지형지물의 스타일을 지정할 수 있습니다.

기본 스타일

GeoJsonLayer에서 계층에 추가된 점, 라인스트링 및 폴리곤에 기본 스타일을 설정할 수 있습니다. 기본 스타일은 지형지물의 기하학적 구조 중 어느 한 쪽에 스타일 집합이 없는 경우에만 적용됩니다. 기본 스타일을 변경하면 기본 스타일을 사용하는 모든 지형지물에 반영됩니다.

기본 스타일을 적용하는 절차는 다음과 같습니다.

  1. 관련 기본 스타일 객체를 검색합니다. GeoJsonPointStyle, GeoJsonLineStringStyle 또는 GeoJsonPolygonStyle 중 하나가 될 수 있습니다.
  2. 스타일에 원하는 옵션을 적용합니다.

예를 들어, 다음 코드 샘플은 기본 점 스타일을 수정하여 제목과 스니펫이 포함된 드래그 가능한 점을 만드는 방법을 보여줍니다.

GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle();
pointStyle.setDraggable(true);
pointStyle.setTitle(“Hello, World!”);
pointStyle.setSnippet(“I am a draggable marker”);

GeoJsonFeature에 특정한 스타일 지정

또는, 계층의 개별 지형지물에 대해 스타일을 지정할 수 있습니다. 다음과 같이 GeoJsonFeature에 스타일을 적용합니다.

  1. 관련 스타일 객체를 생성합니다. GeoJsonPointStyle, GeoJsonLineStringStyle 또는 GeoJsonPolygonStyle 중 하나가 될 수 있습니다.
  2. 스타일에 원하는 옵션을 적용합니다.
  3. GeoJsonFeature에서 관련 메서드에 스타일 객체를 전달합니다. setPointStyle(), setLineStringStyle() 또는 setPolygonStyle() 중 하나가 될 수 있습니다.

예를 들어, 다음은 GeoJsonFeature의 라인스트링 스타일을 색상이 빨간색이 되도록 사용자 지정하는 방법입니다.

// Create a new feature containing a linestring
ArrayList<LatLng> lineStringArray = new ArrayList<LatLng>();
lineStringArray.add(new LatLng(0, 0));
lineStringArray.add(new LatLng(50, 50));
GeoJsonLineString lineString = new GeoJsonLineString(lineStringArray);
GeoJsonFeature lineStringFeature = new GeoJsonFeature(lineString, null, null, null);

// Set the color of the linestring to red
GeoJsonLineStringStyle lineStringStyle = new GeoJsonLineStringStyle();
lineStringStyle.setColor(Color.RED);

// Set the style of the feature
lineStringFeature.setLineStringStyle(lineStringStyle);

데모 앱 보기

URL에서 GeoJSON 파일을 가져와서 계층을 생성하는 예시를 보려면, 유틸리티 라이브러리와 함께 제공되는 데모 앱에서 GeoJsonDemoActivity를 참조하세요. 설정 가이드는 데모 앱을 실행하는 방법을 보여줍니다.

다음에 대한 의견 보내기...

Google Maps Android API
Google Maps Android API
도움이 필요하시나요? 지원 페이지를 방문하세요.