모든 준비를 마쳤습니다!

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

Google Maps Android API 활성화

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

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

Google Maps KML 가져오기 유틸리티

  1. 소개
  2. KML 계층 추가
  3. KML 계층 삭제
  4. KML 컨테이너 액세스
  5. KML 장소 마크 및 KML 그라운드 오버레이 액세스
  6. KML 속성 액세스
  7. KML 지원 기능

소개

KMLXML 데이터 형식의 확장으로, 지도에 지리적 데이터를 나타냅니다. 이 유틸리티를 사용하면 KML 객체를 지리적 셰이프로 변환하고 지도 위의 계층으로 렌더링할 수 있습니다. 지도에서 KML 데이터를 추가/제거하려면 각각 addLayerToMap()removeLayerFromMap()을 호출합니다. KML 객체의 속성에 액세스하려면 Placemark, GroundOverlay, Document 또는 Folder에서 getProperties()를 호출합니다.

지도에 KML 계층 추가

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

로컬 리소스에서 KML 데이터 집합을 가져와서 렌더링하려면 다음 항목이 필요합니다.

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

로컬 스트림에서 KML 데이터 집합을 가져와서 렌더링하려면 다음 항목이 필요합니다.

  • 계층을 렌더링할 GoogleMap 객체.
  • KML 데이터가 포함된 InputStream.
  • 로컬 리소스를 여는 데 필요한 Context 객체.
KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());

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

layer.addLayerToMap();

KML 계층 삭제

다음 KmlLayer를 생성했다고 가정합시다.

KmlLayer layer = new KmlLayer(getMap(), kmlInputStream, getApplicationContext());
 

지도에서 계층을 제거하려면 removeLayerFromMap()을 호출합니다.

layer.removeLayerFromMap();

KML 컨테이너 액세스

계층에 추가된 모든 컨테이너에 액세스하려면 생성된 계층에서 getContainers()를 호출합니다. 컨테이너에 중첩된 컨테이너가 있는지 확인하려면 hasContainers()를 호출합니다. 이 중첩된 컨테이너에 액세스하려면, 계층에서와 마찬가지로 getContainers()를 호출합니다.

KmlLayer 또는 KmlContainer에서 중첩되지 않은 컨테이너에 액세스하려면:

for (KmlContainer containers : layer.getContainers())
  // Do something to container
}

KmlLayer 또는 KmlContainer에서 중첩된 컨테이너 액세스하려면:

Iterable containers = layer.getContainers();
  public void accessContainers(containers) {
    for (KmlContainer container : containers ) {
    // Do something to container
    if (container.hasContainers()) {
      accessContainers(container.getContainers());
    }
  }
}

KML 장소 마크 및 KML 그라운드 오버레이 액세스

계층에 추가된 장소 마크나 그라운드 오버레이에 액세스하려면 계층이나 컨테이너에서 getPlacemarks() 또는 getGroundOverlays()를 호출합니다. 호출하면 각각 KmlPlacemarks 또는 KmlGroundOverlays의 iterable을 반환합니다.

예를 들어, 계층에서 KmlPlacemark 객체에 액세스하려면:

for (KmlPlacemark placemark : layer.getPlacemarks()) {
  // Do something to Placemark
}

KML 속성 액세스

컨테이너나 장소 마크에서 속성에 액세스하려면 getProperty()를 호출하고 속성 키를 제공합니다. hasProperty()를 호출하여 속성 키가 존재하는지 확인할 수도 있습니다. 이 샘플은 컨테이너에 속성 값 "name"이 존재하는 경우 이를 검색하는 방법을 보여줍니다.

for (KmlContainer container : layer.getContainers()) {
  if (container.hasProperty("name")) {
    System.out.println(container.getProperty("name")):
  }
}

데모 앱 보기

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

KML 지원 기능

KML 요소 지원 여부 설명
<address> 일부 속성 값으로 저장
<AddressDetails> 아니요
<Alias> 아니요
<altitude> 아니요
<altitudeMode> 아니요
<atom:author> 아니요
<atom:link> 아니요
<atom:name> 아니요
<BalloonStyle> 일부 <text>만 지원
<begin> 해당 없음 <TimeSpan>은 지원되지 않음
<bgColor> 아니요
<bottomFov> 해당 없음 <PhotoOverlay>는 지원되지 않음
<Camera> 아니요
<Change> 일부 스타일 변경만 지원
<color> 일부 #AABBGGRR 및 #BBGGRR 포함. <ScreenOverlay> 및 <GroundOverlay>에서는 지원되지 않음
<colorMode>
<cookie> 아니요 <NetworkLinkControl>은 지원되지 않음
<coordinates>
<Create> 아니요
<Data> 아니요
<Delete> 아니요
<description> 일반 텍스트만 지원. HTML 콘텐츠는 지원되지 않음
<displayMode> 아니요
<displayName> 아니요
<Document>
<drawOrder>
<east>
<end> 해당 없음 <TimeSpan>은 지원되지 않음
<expires> 아니요 <NetworkLinkControl>은 지원되지 않음
<ExtendedData> 일부 형식이 없는 <Data>만 지원. <SimpleData>, <Schema> form$[dataName]의 엔터티 교체는 지원되지 않음.
<extrude> 아니요
<fill>
<flyToView> 아니요 <NetworkLinkControl>은 지원되지 않음
<Folder>
<gridOrigin> 해당 없음 <PhotoOverlay>는 지원되지 않음
<GroundOverlay>
<heading>
<hotSpot>
<href>
<httpQuery> 아니요
<Icon>
<IconStyle>
<ImagePyramid> 해당 없음 <PhotoOverlay>는 지원되지 않음
<innerBoundaryIs> <LinearRing> 순서에 따라 암시적으로
<ItemIcon> 해당 없음 <ListStyle>은 지원되지 않음
<key>
<kml>
<LabelStyle> 아니요
<latitude>
<LatLonAltBox> 아니요
<LatLonBox>
<leftFov> 해당 없음 <PhotoOverlay>는 지원되지 않음
<LinearRing>
<LineString>
<LineStyle>
<Link> 아니요
<linkDescription> 해당 없음 <NetworkLinkControl>은 지원되지 않음
<linkName> 해당 없음 <NetworkLinkControl>은 지원되지 않음
<linkSnippet> 해당 없음 <NetworkLinkControl>은 지원되지 않음
<listItemType> 해당 없음 <ListStyle>은 지원되지 않음
<ListStyle> 아니요
<Location> 해당 없음 <Model>은 지원되지 않음
<Lod>
<longitude>
<LookAt> 아니요
<maxAltitude> 아니요
<maxFadeExtent> 아니요
<maxHeight> 해당 없음 <PhotoOverlay>는 지원되지 않음
<maxLodPixels> 아니요
<maxSessionLength> 아니요
<maxWidth> 해당 없음 <PhotoOverlay>는 지원되지 않음
<message> 아니요
<minAltitude> 아니요
<minFadeExtent> 아니요
<minLodPixels> 아니요
<minRefreshPeriod> 아니요 <NetworkLink>
<Model> 아니요
<MultiGeometry>
<name>
<near> 해당 없음 <PhotoOverlay>는 지원되지 않음
<NetworkLink> 아니요
<NetworkLinkControl> 아니요
<north>
<open> 속성 값으로 저장
<Orientation> 해당 없음 <Model>은 지원되지 않음
<outerBoundaryIs> <LinearRing> 순서에 따라 암시적으로
<outline>
<overlayXY> 아니요
<Pair>
<phoneNumber> 일부 속성 값으로 저장
<PhotoOverlay> 아니요
<Placemark>
<Point>
<Polygon>
<PolyStyle>
<range>
<refreshInterval> 아니요
<refreshMode> 아니요
<refreshVisibility> 아니요
<Region>
<ResourceMap> 해당 없음 <Model>은 지원되지 않음
<rightFov> 해당 없음 <PhotoOverlay>는 지원되지 않음
<roll> 해당 없음 <Camera>와 <Model>은 지원되지 않음
<rotation>
<rotationXY> 아니요
<Scale> 해당 없음 <Model>은 지원되지 않음
<scale>
<Schema> 아니요
<SchemaData> 아니요
<ScreenOverlay> 아니요
<screenXY> 해당 없음 <ScreenOverlay>는 지원되지 않음
<shape> 해당 없음 <PhotoOverlay>는 지원되지 않음
<SimpleData> 해당 없음 <SchemaData>는 지원되지 않음
<SimpleField> 해당 없음 <Schema>는 지원되지 않음
<size>
<Snippet> 아니요
<south>
<state> 해당 없음 <ListStyle>은 지원되지 않음
<Style>
<StyleMap> 일부 강조 표시된 스타일은 지원되지 않음 인라인 StyleMaps는 지원되지 않음
<styleUrl>
<targetHref> 아니요 <Alias>는 지원되지 않음
<tessellate> 아니요
<text>
<textColor> 아니요
<tileSize> 해당 없음 <PhotoOverlay>는 지원되지 않음
<tilt> 아니요
<TimeSpan> 아니요
<TimeStamp> 아니요
<topFov> 해당 없음 <PhotoOverlay>는 지원되지 않음
<Update> 해당 없음 <NetworkLinkControl>은 지원되지 않음
<value>
<viewBoundScale> 아니요
<viewFormat> 아니요
<viewRefreshMode> 아니요
<viewRefreshTime> 아니요
<ViewVolume> 해당 없음 <PhotoOverlay>는 지원되지 않음
<visibility>
<west>
<when> 해당 없음 <TimeStamp>는 지원되지 않음
<width>

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

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