KML 및 GeoRSS 레이어

플랫폼 선택: Android iOS 자바스크립트

KmlLayer는 KML 및 GeoRSS 요소를 Maps JavaScript API 타일 오버레이로 렌더링합니다.

개요

Maps JavaScript API는 지리 정보를 표시하기 위한 KML 및 GeoRSS 데이터 형식을 지원합니다. 이러한 데이터 형식은 KmlLayer 객체를 사용하여 지도에 표시되며 이 객체의 생성자는 공개적으로 액세스할 수 있는 KML 또는 GeoRSS 파일의 URL을 가져옵니다.

참고: Maps JavaScript API에서 KML 오버레이를 생성하는 KmlLayer 클래스는 Google 호스팅 서비스를 사용하여 렌더링할 KML 파일을 가져오고 파싱합니다. 따라서 액세스하기 위해 인증이 필요하지 않은 공개 액세스 가능 URL에서 호스팅되는 경우에만 KML 파일을 표시할 수 있습니다.

비공개 파일에 액세스하거나 캐시를 세밀하게 관리하거나 브라우저 표시 영역을 지리 공간 데이터 서버에 쿼리 매개변수로 전송해야 하는 경우 KmlLayer 대신 데이터 레이어를 사용하는 것이 좋습니다. 이렇게 하면 브라우저가 웹 서버에서 리소스를 직접 요청하도록 지시하게 됩니다.

Maps JavaScript API는 제공된 지리적 XML 데이터를 Maps JavaScript API 타일 오버레이를 사용하여 지도에 표시되는 KML 표현으로 변환합니다. 이 KML은 Maps JavaScript API 오버레이 요소와 비슷하며 작동하는 방식도 다소 비슷합니다. KML <Placemark> 및 GeoRSS point 요소는 마커로 렌더링됩니다. 예를 들어 <LineString> 요소는 다중선으로 렌더링되고 <Polygon> 요소는 다각형으로 렌더링됩니다. 마찬가지로 <GroundOverlay> 요소는 지도에서 직사각형 이미지로 렌더링됩니다. 하지만 이러한 객체는 Maps JavaScript API Markers, Polylines, Polygons 또는 GroundOverlays아닙니다. 대신 지도에서 단일 객체로 렌더링됩니다.

KmlLayer 객체는 map 속성이 설정된 후 지도에 표시됩니다. setMap()을 호출하고 null을 전달하여 이 객체를 지도에서 삭제할 수 있습니다. KmlLayer 객체는 지도에 지정된 경계에 해당하는 적절한 지형지물을 자동으로 가져와 하위 요소의 렌더링을 관리합니다. 경계가 변경되면 현재 표시 영역의 지형지물이 자동으로 렌더링됩니다.

KmlLayer 내 구성요소는 요청이 있어야 렌더링되므로 레이어를 사용하면 수천 개의 마커, 다중선 및 다각형의 렌더링을 쉽게 관리할 수 있습니다. 이러한 구성 객체는 직접 액세스할 수 없지만 각각 개별 객체에서 데이터를 반환하는 클릭 이벤트를 제공합니다.

KML 레이어 옵션

KmlLayer() 생성자는 선택적으로 여러 KmlLayerOptions를 전달합니다.

  • mapKmlLayer를 렌더링할 Map을 지정합니다. setMap() 메서드 내에서 이 값을 null로 설정하여 KmlLayer를 숨길 수 있습니다.
  • preserveViewport는 레이어를 표시할 때 KmlLayer 콘텐츠의 경계로 지도를 조정하지 않아야 함을 지정합니다. 기본적으로 KmlLayer를 표시할 때 지도는 레이어의 전체 콘텐츠를 표시하도록 확대/축소되고 배치됩니다.
  • suppressInfoWindowsKmlLayer 내 클릭 가능한 지형지물이 InfoWindow 객체의 표시를 트리거하지 않아야 함을 나타냅니다.

또한 KmlLayer가 렌더링되면 KmlLayerMetadata 객체 리터럴에 레이어의 이름, 설명, 스니펫 및 작성자가 포함된 변경할 수 없는 metadata 속성이 포함됩니다. getMetadata() 메서드를 사용하여 이 정보를 검사할 수 있습니다. KmlLayer 객체를 렌더링하려면 외부 서버와의 비동기 통신이 필요하므로 속성이 채워졌음을 나타내는 metadata_changed 이벤트를 리슨해야 합니다.

다음 예의 경우 지정된 GeoRSS 피드에서 KmlLayer가 생성됩니다.

TypeScript

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 4,
      center: { lat: 49.496675, lng: -102.65625 },
    }
  );

  const georssLayer = new google.maps.KmlLayer({
    url:
      "http://api.flickr.com/services/feeds/geo/?g=322338@N20&lang=en-us&format=feed-georss",
  });
  georssLayer.setMap(map);
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 4,
    center: { lat: 49.496675, lng: -102.65625 },
  });
  const georssLayer = new google.maps.KmlLayer({
    url: "http://api.flickr.com/services/feeds/geo/?g=322338@N20&lang=en-us&format=feed-georss",
  });

  georssLayer.setMap(map);
}

window.initMap = initMap;

CSS

/*
 * Always set the map height explicitly to define the size of the div element
 * that contains the map.
 */
#map {
  height: 100%;
}

/*
 * Optional: Makes the sample page fill the window.
 */
html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}

HTML

<html>
  <head>
    <title>GeoRSS Layers</title>
    <script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>

    <link rel="stylesheet" type="text/css" href="./style.css" />
    <script type="module" src="./index.js"></script>
  </head>
  <body>
    <div id="map"></div>

    <!--
      The `defer` attribute causes the callback to execute after the full HTML
      document has been parsed. For non-blocking uses, avoiding race conditions,
      and consistent behavior across browsers, consider loading using Promises.
      See https://developers.google.com/maps/documentation/javascript/load-maps-js-api
      for more information.
      -->
    <script
      src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initMap&v=weekly"
      defer
    ></script>
  </body>
</html>

샘플 사용해 보기

다음 예의 경우 지정된 KML 피드에서 KmlLayer가 생성됩니다.

TypeScript

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 11,
      center: { lat: 41.876, lng: -87.624 },
    }
  );

  const ctaLayer = new google.maps.KmlLayer({
    url: "https://googlearchive.github.io/js-v2-samples/ggeoxml/cta.kml",
    map: map,
  });
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 11,
    center: { lat: 41.876, lng: -87.624 },
  });
  const ctaLayer = new google.maps.KmlLayer({
    url: "https://googlearchive.github.io/js-v2-samples/ggeoxml/cta.kml",
    map: map,
  });
}

window.initMap = initMap;

CSS

/*
 * Always set the map height explicitly to define the size of the div element
 * that contains the map.
 */
#map {
  height: 100%;
}

/*
 * Optional: Makes the sample page fill the window.
 */
html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}

HTML

<html>
  <head>
    <title>KML Layers</title>
    <script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>

    <link rel="stylesheet" type="text/css" href="./style.css" />
    <script type="module" src="./index.js"></script>
  </head>
  <body>
    <div id="map"></div>

    <!--
      The `defer` attribute causes the callback to execute after the full HTML
      document has been parsed. For non-blocking uses, avoiding race conditions,
      and consistent behavior across browsers, consider loading using Promises.
      See https://developers.google.com/maps/documentation/javascript/load-maps-js-api
      for more information.
      -->
    <script
      src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initMap&v=weekly"
      defer
    ></script>
  </body>
</html>

샘플 사용해 보기

KML 지형지물 세부정보

KML에는 많은 수의 지형지물이 포함될 수 있으므로 KmlLayer 객체에서 직접 지형지물 데이터에 액세스하지 못할 수도 있습니다. 대신 지형지물이 표시될 때 클릭 가능한 Maps JavaScript API 오버레이처럼 렌더링됩니다. 기본적으로 개별 지형지물을 클릭하면 지정된 지형지물에 KML <title><description> 정보가 포함된 InfoWindow가 표시됩니다. 또한 KML 지형지물을 클릭하면 KmlMouseEvent가 생성되어 다음과 같은 정보를 전달합니다.

  • position은 이 KML 지형지물의 InfoWindow를 고정하기 위한 위도/경도 좌표를 나타냅니다. 이 위치는 일반적으로 다각형, 다중선, GroundOverlay의 경우 클릭된 위치이지만 마커의 경우 실제 원점입니다.
  • pixelOffsetInfoWindow '꼬리'를 고정하기 위한 위 position로부터의 오프셋을 나타냅니다. 다각형 객체의 경우 이 오프셋은 일반적으로 0,0이지만 마커의 경우 마커의 높이가 포함됩니다.
  • featureData에는 KmlFeatureData의 JSON 구조가 포함됩니다.

샘플 KmlFeatureData 객체는 아래와 같습니다.

{
  author: {
    email: "nobody@google.com",
    name: "Mr Nobody",
    uri: "http://example.com"
  },
  description: "description",
  id: "id",
  infoWindowHtml: "html",
  name: "name",
  snippet: "snippet"
}

아래의 예에서 지형지물을 클릭하면 측면 <div> 내에 KML 지형지물 <Description> 텍스트가 표시됩니다.

TypeScript

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      zoom: 12,
      center: { lat: 37.06, lng: -95.68 },
    }
  );

  const kmlLayer = new google.maps.KmlLayer({
    url: "https://raw.githubusercontent.com/googlearchive/kml-samples/gh-pages/kml/Placemark/placemark.kml",
    suppressInfoWindows: true,
    map: map,
  });

  kmlLayer.addListener("click", (kmlEvent) => {
    const text = kmlEvent.featureData.description;

    showInContentWindow(text);
  });

  function showInContentWindow(text: string) {
    const sidebar = document.getElementById("sidebar") as HTMLElement;

    sidebar.innerHTML = text;
  }
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 12,
    center: { lat: 37.06, lng: -95.68 },
  });
  const kmlLayer = new google.maps.KmlLayer({
    url: "https://raw.githubusercontent.com/googlearchive/kml-samples/gh-pages/kml/Placemark/placemark.kml",
    suppressInfoWindows: true,
    map: map,
  });

  kmlLayer.addListener("click", (kmlEvent) => {
    const text = kmlEvent.featureData.description;

    showInContentWindow(text);
  });

  function showInContentWindow(text) {
    const sidebar = document.getElementById("sidebar");

    sidebar.innerHTML = text;
  }
}

window.initMap = initMap;

CSS

/* Optional: Makes the sample page fill the window. */
html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}

#container {
  height: 100%;
  display: flex;
}

#sidebar {
  flex-basis: 15rem;
  flex-grow: 1;
  padding: 1rem;
  max-width: 30rem;
  height: 100%;
  box-sizing: border-box;
  overflow: auto;
}

#map {
  flex-basis: 0;
  flex-grow: 4;
  height: 100%;
}

HTML

<html>
  <head>
    <title>KML Feature Details</title>
    <script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>

    <link rel="stylesheet" type="text/css" href="./style.css" />
    <script type="module" src="./index.js"></script>
  </head>
  <body>
    <div id="container">
      <div id="map"></div>
      <div id="sidebar"></div>
    </div>

    <!--
      The `defer` attribute causes the callback to execute after the full HTML
      document has been parsed. For non-blocking uses, avoiding race conditions,
      and consistent behavior across browsers, consider loading using Promises.
      See https://developers.google.com/maps/documentation/javascript/load-maps-js-api
      for more information.
      -->
    <script
      src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initMap&v=weekly"
      defer
    ></script>
  </body>
</html>

샘플 사용해 보기

KML 렌더링의 크기 및 복잡성 제한

Maps JavaScript API에서는 로드된 KML 파일의 크기와 복잡성이 제한됩니다. 다음은 현재 한도의 요약입니다.

참고: 이 한도는 언제든지 변경될 수 있습니다.

가져올 수 있는 파일의 최대 크기(원본 KML, 원본 GeoRSS 또는 압축된 KMZ)
3MB
압축되지 않은 KML 파일의 최대 크기
10MB
KMZ 파일의 압축되지 않은 이미지 파일의 최대 크기
파일당 500KB
네트워크 링크의 최대 개수
10
문서 전체 지형지물의 최대 개수
1,000
KML 레이어 수
단일 Google 지도에 표시할 수 있는 KML 레이어의 수에 한도가 있습니다. 이 한도를 초과하면 지도에 레이어가 표시되지 않으며 웹브라우저의 자바스크립트 콘솔에 오류가 표시됩니다. 이 한도는 생성된 KmlLayer 클래스의 수와 해당 레이어를 만드는 데 사용된 모든 URL의 총 길이의 조합을 기반으로 합니다. 새로 만드는 각 KmlLayer는 KML 파일이 로드된 URL의 길이에 따라 레이어의 한도와 추가 한도를 차지합니다. 결과적으로 추가할 수 있는 레이어의 수는 애플리케이션에 따라 다릅니다. 한도에 도달하지 않고 평균 10~20개의 레이어를 로드할 수 있습니다. 그래도 한도에 도달하면 URL 단축기를 사용하여 KML URL을 줄입니다. 또는 개별 KML URL에 대한 NetworkLink로 구성된 단일 KML 파일을 만듭니다.

성능 및 캐싱 관련 고려사항

Google 서버는 서버의 로드를 줄이기 위해 KML 파일을 일시적으로 캐시합니다. 또한 사용자가 지도를 클릭하거나 화면 이동하거나 확대/축소할 때 KML 파일의 적절한 세그먼트를 공간 효율적으로 표시하여 성능을 개선합니다.

최상의 성능을 위해서는 다음과 같이 하는 것이 좋습니다.

  • KML에 적절한 <expires> 태그를 사용합니다.

    KmlLayer는 KML 파일을 캐시하는 방법을 결정할 때 HTTP 헤더를 사용하지 않습니다.
  • 요청 시 파일을 동적으로 생성하지 않습니다.

    대신 파일을 미리 생성하고 정적으로 제공합니다. 서버가 KML 파일을 전송하는 데 시간이 오래 걸리는 경우 KmlLayer가 표시되지 않을 수도 있습니다.
  • 파일이 업데이트된 것을 확실히 알지 못하는 경우 캐시를 우회하려고 시도하지 않습니다.

    예를 들어 무작위 숫자 또는 사용자의 시계 시간을 쿼리 매개변수로 추가하여 캐시를 우회하면 사이트가 갑자기 많이 이용되고 큰 KML 파일을 제공하여 서버에 과부하가 걸리게 됩니다.

    또한 사용자의 시계가 맞지 않고 <expires> 태그가 올바로 설정되지 않은 경우 캐시가 사용자에게 오래된 데이터를 제공할 수 있습니다.

    대신, 업데이트된 정적 파일을 새로운 개별 버전 번호로 게시하고 서버 측 코드를 사용하여 KmlLayer에 전달된 URL을 현재 버전으로 동적으로 업데이트하세요.
  • KML 파일 변경을 분당 1회로 제한합니다.

    모든 파일의 크기가 총 1MB를 초과하는 경우(압축되지 않은 경우) 5분마다 1회로 제한합니다.
  • 지리 공간 데이터 서버를 사용하는 경우 쿼리 매개변수를 사용하여 레이어의 표시 영역을 제한하지 않습니다.

    대신 bounds_changed 이벤트를 사용하여 지도 표시 영역을 제한할 수 있습니다. 자동으로 표시할 수 있는 지형지물만 사용자에게 전송됩니다.

    지리 공간 데이터 서버에 많은 양의 데이터가 있으면 데이터 레이어를 대신 사용해 보세요.
  • 지리 공간 데이터 서버를 사용하는 경우 여러 쿼리 매개변수가 포함된 단일 KmlLayer 대신 사용자가 전환할 수 있도록 허용하려는 지형지물의 그룹마다 여러 KmlLayer를 사용합니다.
  • 압축된 KMZ 파일을 사용하여 파일 크기를 줄입니다.
  • Google Cloud Storage 또는 다른 클라우드 스토리지 솔루션을 사용하는 경우 서명된 URL 또는 임시 토큰과 같은 기능을 사용하여 액세스 제어를 실행하지 않습니다. 이렇게 하면 의도치 않게 캐싱을 차단할 수 있습니다.
  • 모든 지점의 정밀도를 적절한 정밀도로 줄입니다.
  • 다각형과 다중선 등 유사한 지형지물의 도형을 병합하고 단순화합니다.
  • 사용하지 않는 요소 또는 이미지 리소스를 삭제합니다.
  • 지원되지 않는 요소를 삭제합니다.

비공개 데이터에 액세스하거나 캐싱을 방지하거나 브라우저 표시 영역을 지리정보 데이터 서버에 쿼리 매개변수로 전송해야 하는 경우 KmlLayer 대신 데이터 레이어를 사용하는 것이 좋습니다. 이렇게 하면 브라우저가 웹 서버에서 리소스를 직접 요청하도록 지시하게 됩니다.

지원되는 KML 요소

Maps JavaScript API는 다음과 같은 KML 요소를 지원합니다. KML 파서는 일반적으로 이해하지 못하는 XML 태그를 자동으로 무시합니다.

  • 위치표시
  • 아이콘
  • 폴더
  • 설명이 포함된 HTML - <BalloonStyle> 및 <text>를 통한 항목 교체
  • KMZ(압축된 KML, 첨부된 이미지 포함)
  • 다중선 및 다각형
  • 다중선 및 다각형의 스타일(색상, 채우기, 불투명도 포함)
  • 데이터를 동적으로 가져오기 위한 네트워크 링크
  • 지면 오버레이 및 화면 오버레이

다음 표에 지원되는 KML 요소의 세부 정보가 나와 있습니다.

KML 요소 API에서의 지원 여부 메모
<address> 아니요
<AddressDetails> 아니요
<Alias> 해당 없음 <Model>은 지원되지 않음
<altitude> 아니요
<altitudeMode> 아니요
<atom:author>
<atom:link>
<atom:name>
<BalloonStyle> 일부 지원 <text>만 지원됨
<begin> 해당 없음 <TimeSpan>만 지원됨
<bgColor> 아니요
<bottomFov> 해당 없음 <PhotoOverlay>는 지원되지 않음
<Camera> 아니요
<Change> 일부 지원 스타일 변경만 지원됨
<color> 일부 지원 #AABBGGRR 및 #BBGGRR 포함, <IconStyle>, <ScreenOverlay> 및 <GroundOverlay>에서 지원되지 않음
<colorMode> 아니요
<cookie> 아니요
<coordinates>
<Create> 아니요
<Data>
<Delete> 아니요
<description> HTML 콘텐츠는 허용되지만 브라우저 간 공격으로부터 보호하기 위해 삭제되었습니다. $[dataName] 형태의 항목 교체는 지원되지 않습니다.
<displayMode> 아니요
<displayName> 아니요
<Document> 일부 지원 암시적으로 하위 요소를 지원하며, 다른 지형지물의 하위 요소로는 효과가 없습니다.
<drawOrder> 아니요
<east>
<end> 해당 없음 <TimeSpan>만 지원됨
<expires> 자세한 내용은 요약 섹션 참조
<ExtendedData> 일부 지원 유형이 지정되지 않은 <Data>만 지원, <SimpleData> 또는 <Schema>는 지원되지 않음, $[dataName] 형태의 항목 교체는 지원되지 않음
<extrude> 아니요
<fill>
<flyToView> 아니요
<Folder>
<geomColor> 아니요 지원 중단됨
<GeometryCollection> 아니요 지원 중단됨
<geomScale> 아니요 지원 중단됨
<gridOrigin> 해당 없음 <PhotoOverlay>는 지원되지 않음
<GroundOverlay> 회전할 수 없음
<h> 지원 중단됨
<heading>
도움말 target=... 지원됨
<hotSpot>
<href>
<httpQuery> 아니요
<Icon> 회전할 수 없음
<IconStyle>
<ImagePyramid> 해당 없음 <PhotoOverlay>는 지원되지 않음
<innerBoundaryIs> <LinearRing> 명령에 포함
<ItemIcon>ㅁㅈㅇㅁㅈ 해당 없음 <ListStyle>은 지원되지 않음
<key> 해당 없음 <StyleMap>은 지원되지 않음
<kml>
<labelColor> 아니요 지원 중단됨
<LabelStyle> 아니요
<latitude>
<LatLonAltBox>
<LatLonBox>
<leftFov> 해당 없음 <PhotoOverlay>는 지원되지 않음
<LinearRing>
<LineString>
<LineStyle>
<Link>
<linkDescription> 아니요
<linkName> 아니요
<linkSnippet> 아니요
<listItemType> 해당 없음 <ListStyle>은 지원되지 않음
<ListStyle> 아니요
<Location> 해당 없음 <Model>은 지원되지 않음
<Lod>
<longitude>
<LookAt> 아니요
<maxAltitude>
<maxFadeExtent>
<maxHeight> 해당 없음 <PhotoOverlay>는 지원되지 않음
<maxLodPixels>
<maxSessionLength> 아니요
<maxWidth> 해당 없음 <PhotoOverlay>는 지원되지 않음
<message> 아니요
<Metadata> 아니요 지원 중단됨
<minAltitude>
<minFadeExtent>
<minLodPixels>
<minRefreshPeriod> 아니요 <NetworkLink>
<Model> 아니요
<MultiGeometry> 일부 지원 렌더링되지만 왼쪽 패널에 별도의 지형지물로 표시됨
<name>
<near> 해당 없음 <PhotoOverlay>는 지원되지 않음
<NetworkLink>  
<NetworkLinkControl> 일부 지원 <Update> 및 <expires>는 부분적으로 지원됩니다. API는 HTTP 헤더의 만료 설정은 무시하지만 KML에 지정된 만료 설정은 사용합니다. 만료 설정이 없거나 유효 기간이 지나지 않은 경우 Google 지도는 지정되지 않은 기간 동안 인터넷에서 가져온 데이터를 캐시할 수도 있습니다. 문서의 이름을 바꿔 다른 URL로 가져오거나 문서에 적절한 만료 설정을 포함하여 인터넷에서 데이터를 다시 가져올 수 있습니다.
<north>
<open>
<Orientation> 해당 없음 <Model>은 지원되지 않음
<outerBoundaryIs> <LinearRing> 명령에 포함
<outline>
<overlayXY> 아니요
<Pair> 해당 사항 없음 <StyleMap>은 지원되지 않음
<phoneNumber> 아니요
<PhotoOverlay> 아니요
<Placemark>
<Point>
<Polygon>
<PolyStyle>
<range>
<refreshInterval> 일부 지원 <Link>에서만 지원됨, <Icon>에서는 지원되지 않음
<refreshMode> 'onExpire' 모드에서는 HTTP 헤더가 지원되지 않습니다. 위의 <Update> 및 <expires>에 관한 메모를 참고하세요.
<refreshVisibility> 아니요
<Region>
<ResourceMap> 해당 없음 <Model>은 지원되지 않음
<rightFov> 해당 없음 <PhotoOverlay>는 지원되지 않음
<roll> 해당 없음 <Camera> 및 <Model>은 지원되지 않음
<rotation> 아니요
<rotationXY> 아니요
<Scale> 해당 없음 <Model>은 지원되지 않음
<scale> 아니요
<Schema> 아니요
<SchemaData> 아니요
<ScreenOverlay> 회전할 수 없음
<screenXY> 아니요
<shape> 해당 없음 <PhotoOverlay>는 지원되지 않음
<SimpleData> 해당 없음 <SchemaData>는 지원되지 않음
<SimpleField> 해당 없음 <Schema>는 지원되지 않음
<size>
<Snippet>
<south>
<state> 해당 없음 <ListStyle>은 지원되지 않음
<Style>
<StyleMap> 아니요 마우스오버(강조표시) 효과는 지원되지 않음
<styleUrl> 해당 없음 <StyleMap>은 지원되지 않음
<targetHref> 일부 지원 <Update>에서 지원됨, <Alias>에서는 지원되지 않음
<tessellate> 아니요
<text> $[geDirections]의 교체는 지원되지 않음
<textColor> 아니요
<tileSize> 해당 없음 <PhotoOverlay>는 지원되지 않음
<tilt> 아니요
<TimeSpan> 아니요
<TimeStamp> 아니요
<topFov> 해당 없음 <PhotoOverlay>는 지원되지 않음
<Update> 일부 지원 스타일만 변경됨, <Create> 또는 <Delete>는 변경되지 않음
<Url> 지원 중단됨
<value>
<viewBoundScale> 아니요
<viewFormat> 아니요
<viewRefreshMode> 일부 지원 'onStop'은 지원됨
<viewRefreshTime>
<ViewVolume> 해당 없음 <PhotoOverlay>는 지원되지 않음
<visibility> 일부 지원 <Folder>에서 예 - 하위 위치표시는 표시 여부를 상속함
<w> 지원 중단됨
<west>
<when> 해당 없음 <TimeStamp>는 지원되지 않음
<width>
<x> 지원 중단됨
<y> 지원 중단됨