שכבות KML ו-geoRSS

בחירת פלטפורמה: Android iOS JavaScript

הרכיב KmlLayer מעבד רכיבי KML ו-GeoRSS לשכבת-על של משבצת API של JavaScript במפות Google.

סקירה

ממשק ה-API של JavaScript במפות Google תומך בפורמטים של נתוני KML ו-GeoRSS להצגת מידע גיאוגרפי. הפורמטים האלה של הנתונים מוצגים במפה באמצעות אובייקט KmlLayer, שהבנאי שלו משתמש בכתובת ה-URL של קובץ KML או GeoRSS שנגיש לכולם.

הערה: המחלקה KmlLayer שיוצרת שכבות-על של KML ב-Maps JavaScript API משתמשת בשירות שמתארח ב-Google כדי לאחזר ולנתח קובצי KML לצורך עיבוד. לכן אפשר להציג קובצי KML רק אם הם מתארחים בכתובת URL נגישה לכולם שלא מחייבת אימות כדי לגשת אליהם.

אם נדרשת לכם גישה לקבצים פרטיים, שליטה פרטנית במטמון או שליחה של אזור התצוגה של הדפדפן לשרת נתונים גיאו-מרחבי כפרמטר של שאילתה, מומלץ להשתמש בשכבות נתונים במקום ב-KmlLayer. הפעולה הזו תנחה את הדפדפנים של המשתמשים לבקש משאבים ישירות משרת האינטרנט שלך.

API JavaScript של מפות Google ממיר את נתוני ה-XML הגיאוגרפיים שסופקו לייצוג KML שמוצג במפה באמצעות שכבת-על של משבצת API של JavaScript של מפות Google. ה-KML הזה נראה (ופועל במידה מסוימת) כמו רכיבי שכבת-על מוכרים של JavaScript API של מפות Google. רכיבי KML <Placemark> ו-GeoRSS point עוברים עיבוד כסמנים. לדוגמה, רכיבי <LineString> מעובדים כקווים פוליגוניים ורכיבי <Polygon> מעובדים כפוליגונים. באופן דומה, רכיבי <GroundOverlay> מעובדים כתמונות מלבניות במפה. עם זאת, חשוב לציין שאובייקטים אלה לא של Maps JavaScript API Markers, Polylines, Polygons או GroundOverlays. במקום זאת, הם מעובדים לאובייקט יחיד במפה.

KmlLayer אובייקטים מופיעים במפה אחרי שמגדירים את המאפיין map. אפשר להסיר אותם מהמפה על ידי שליחת קריאה ל-setMap() להעביר את null. האובייקט KmlLayer מנהל את הרינדור של רכיבי הצאצא האלה על ידי אחזור אוטומטי של התכונות שמתאימות לגבולות הנתונים של המפה. כשהגבולות משתנים, התכונות באזור התצוגה הנוכחי מעובדות באופן אוטומטי.

מכיוון שהרכיבים בתוך KmlLayer מעובדים לפי דרישה, השכבה מאפשרת לכם לנהל בקלות את העיבוד של אלפי סמנים, קווים פוליגוניים ופוליגונים. חשוב לשים לב שאי אפשר לגשת ישירות לאובייקטים האלה, למרות שכל אחד מהם מספק אירועי קליק שמחזירים נתונים על האובייקטים הבודדים האלה.

אפשרויות שכבות KML

ה-constructor של KmlLayer() מעביר באופן אופציונלי כמה KmlLayerOptions:

  • map מציין את ה-Map שבו צריך לעבד את KmlLayer. אפשר להסתיר KmlLayer על ידי הגדרת הערך הזה כ-null ב-method setMap().
  • preserveViewport מציין שאין להתאים את המפה לגבולות התוכן של KmlLayer כאשר מציגים את השכבה. כברירת מחדל, כשמציגים KmlLayer, מרחק התצוגה של המפה משתנה וממוקם כדי להציג את כל תוכן השכבה.
  • suppressInfoWindows מציין שתכונות קליקביליות בתוך KmlLayer לא יפעילו הצגה של אובייקטים של InfoWindow.

בנוסף, אחרי עיבוד של KmlLayer, הוא מכיל מאפיין metadata שלא ניתן לשינוי, שמכיל את שם השכבה, התיאור, קטע הטקסט והמחבר שלה בליטרל של אובייקט KmlLayerMetadata. אפשר לבדוק את המידע הזה באמצעות השיטה getMetadata(). מכיוון שרינדור אובייקטים של KmlLayer דורש תקשורת אסינכרונית עם שרת חיצוני, כדאי להאזין לאירוע metadata_changed שיציין שהנכס מאוכלס.

הדוגמה הבאה יוצרת KmlLayer מהפיד הגיאוגרפי של GeoRSS הנתון:

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>

    <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 script 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>

כדאי לנסות דוגמה

הדוגמה הבאה יוצרת KmlLayer מפיד ה-KML הנתון:

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>

    <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 script 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. במקום זאת, בזמן שהתכונות מוצגות, הן מעובדות באופן שנראה כמו שכבות-על של JavaScript API של מפות Google שאפשר ללחוץ עליהן. כברירת מחדל, לחיצה על תכונות מסוימות תוביל להצגת InfoWindow שמכיל <title> של KML ומידע על <description> על התכונה הנתונה. בנוסף, לחיצה על תכונה של KML יוצרת KmlMouseEvent, שמעביר את המידע הבא:

  • position מציין את הקואורדינטות של קו הרוחב/קו האורך שבהן צריך לעגן את ה-InfoWindow של תכונת ה-KML הזו. המיקום הזה הוא בדרך כלל המיקום שעליו לוחצים עבור פוליגונים, קווים פוליגוניים ושכבות-על של קרקע, אבל המקור האמיתי של הסמנים.
  • pixelOffset מציין את ההיסט מ-position שלמעלה כדי לעגן את ה"זנב" InfoWindow. באובייקטים פוליגונים, ההיסט הזה הוא בדרך כלל 0,0 אבל עבור סמנים הוא כולל את גובה הסמן.
  • featureData מכיל מבנה JSON של KmlFeatureData.

זוהי דוגמה לאובייקט KmlFeatureData:

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

הדוגמה הבאה מציגה טקסט של תכונת KML <Description> בתוך <div> כשמשתמשים לוחצים על התכונה:

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>

    <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 script 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

ל-JavaScript API של מפות Google יש מגבלות על הגודל והמורכבות של קובצי KML שנטענו. לפניכם סיכום של המגבלות הנוכחיות.

הערה: המגבלות האלה עשויות להשתנות בכל שלב.

גודל הקובץ המרבי שאותו ניתן לטעון (KML גולמי, GeoRSS גולמי או KMZ דחוס)
3MB
הגודל המרבי של קובץ KML לא דחוס
10MB
הגודל המקסימלי של קובץ תמונה לא דחוס בקובצי KMZ
500KB לכל קובץ
המספר המקסימלי של קישורי רשת
10
המספר המרבי של פריטים במסמך
1,000
מספר שכבות KML
יש הגבלה על מספר שכבות ה-KML שאפשר להציג במפה אחת של Google. אם תחרגו מהמגבלה, אף אחת מהשכבות לא תופיע במפה, ותדווח שגיאה במסוף JavaScript של דפדפן האינטרנט. המגבלה מבוססת על שילוב בין מספר המחלקות של KmlLayer שנוצרו והאורך הכולל של כל כתובות ה-URL ששימשו ליצירת השכבות האלה. כל קובץ KmlLayer חדש שיוצרים יתפוס חלק מהמגבלה של השכבה וחלק נוסף מהמגבלה, בהתאם לאורך כתובת ה-URL שבה קובץ ה-KML נטען. כתוצאה מכך, מספר השכבות שאפשר להוסיף ישתנה בהתאם לאפליקציה. בממוצע, תוכלו לטעון בין 10 ל-20 שכבות בלי להגיע למגבלה. אם עדיין הגעת למגבלה, אפשר להשתמש בכלי לקיצור כתובות URL כדי לקצר את כתובות ה-URL של ה-KML. לחלופין, אפשר ליצור קובץ KML אחד שמורכב מ-NetworkLinks לכתובות ה-URL הנפרדות של KML.

שיקולים לגבי ביצועים ושמירה במטמון

שרתי Google ישמרו באופן זמני קובצי KML במטמון כדי להפחית את העומס על השרתים שלך. כך ישפר גם את הביצועים של המשתמשים שלך על ידי הצגת ייצוג יעיל מבחינת השטח של הקטעים המתאימים בקובץ ה-KML, בזמן שהמשתמשים ילחצו על המפה, יזיז אותה או תשנה את מרחק התצוגה שלה.

כדי ליהנות מהביצועים הטובים ביותר, מומלץ:

  • צריך להשתמש בתג <expires> מתאים ב-KML.

    KmlLayer לא ישתמש בכותרות HTTP כדי להחליט איך לשמור קובצי KML במטמון.
  • אין ליצור קבצים באופן דינמי בזמן הבקשה.

    במקום זאת, אפשר ליצור את הקבצים לפני שיהיה צורך בהם, ולשלוח אותם באופן סטטי. אם עובר הרבה זמן עד שהשרת משדר את קובץ ה-KML, יכול להיות שה-KmlLayer לא יוצג.
  • אין לנסות לעקוף מטמון, אלא אם כן ידוע לך בוודאות שהקובץ עודכן.

    עקיפה תמידית של מטמון (לדוגמה, על ידי הוספה של מספר אקראי או זמן השעון של המשתמש כפרמטר של שאילתה) יכולה לגרום בקלות לעומס על השרתים של אם האתר שלכם פופולרי פתאום ואתם מציגים קובצי KML גדולים.

    היא יכולה גם לגרום למטמון להציג למשתמשים נתונים לא פעילים אם שעון של משתמש כלשהו שגוי והתג <expires> לא הוגדר נכון.

    במקום זאת, צריך לפרסם קבצים סטטיים מעודכנים עם מספר גרסה חדש ונפרד, ולהשתמש בקוד בצד השרת כדי לעדכן באופן דינמי את כתובת ה-URL שמועברת אל KmlLayer בגרסה הנוכחית.
  • אפשר להגביל את השינויים בקובצי ה-KML לפעם אחת בדקה.

    אם הגודל הכולל של כל הקבצים עולה על 1MB (לא דחוס), צריך להגביל את האפשרות הזו פעם אחת ב-5 דקות.
  • כשמשתמשים בשרת נתונים גיאו-מרחבי, מומלץ להימנע משימוש בפרמטרים של שאילתה כדי להגביל את אזור התצוגה של השכבות.

    במקום זאת, אפשר להגביל את אזור התצוגה של המפה באמצעות האירוע bounds_changed. למשתמשים יישלחו רק תכונות שניתן להציג באופן אוטומטי.

    אם יש כמות גדולה של נתונים בשרת הנתונים הגיאו-מרחביים שלכם, כדאי להשתמש במקום זאת בשכבות נתונים.
  • כשמשתמשים בשרת נתונים גיאו-מרחבי, צריך להשתמש במספר רכיבי KmlLayer לכל קבוצת תכונות שרוצים לאפשר למשתמשים להפעיל או להשבית אותה, במקום ב-KmlLayer אחד עם פרמטרים שונים של שאילתה.
  • כדי להקטין את גודל הקובץ, צריך להשתמש בקובצי KMZ דחוסים.
  • אם אתם משתמשים ב-Google Cloud Storage או בפתרון אחר לאחסון בענן, כדאי להימנע משימוש בתכונות כמו כתובות URL חתומות או אסימונים זמניים כדי לאכוף בקרת גישה. הקבצים האלה עלולים למנוע שמירה במטמון בלי כוונה.
  • מפחיתים את הדיוק של כל הנקודות לדיוק מתאים.
  • אפשר למזג ולפשט את הגיאומטריה של ישויות דומות, כמו פוליגונים וקווים פוליגוניים.
  • מסירים רכיבים או משאבי תמונות שלא נמצאים בשימוש.
  • מסירים רכיבים שאינם נתמכים.

אם צריך לגשת למידע פרטי, למנוע שמירה במטמון או לשלוח את אזור התצוגה של הדפדפן לשרת נתונים גיאו-מרחביים כפרמטר של שאילתה, מומלץ להשתמש בשכבות נתונים במקום ב-KmlLayer. הפעולה הזו תנחה את הדפדפנים של המשתמשים לבקש משאבים ישירות משרת האינטרנט שלך.

רכיבי KML נתמכים

ממשק ה-API של JavaScript של מפות Google תומך ברכיבי KML הבאים. המנתח של KML מתעלם בדרך כלל מתגי XML שהוא לא מבין, ואינו מציג על כך הודעה.

  • סמנים
  • סמלים
  • תיקיות
  • HTML תיאורי – החלפת ישות דרך <BallownStyle> ו-<text>
  • KMZ (compressed KML, כולל תמונות מצורפות)
  • קווים שבורים ומצולעים
  • סגנונות עבור קווים שבורים ומצולעים, כולל צבע, מילוי ושקיפות
  • קישורי רשת לייבוא נתונים באופן דינמי
  • שכבות על של קרקע ושכבות על להצגה על המסך

בטבלה הבאה מוצגים הפרטים המלאים של רכיבי ה-KML הנתמכים.

רכיב KML יש תמיכה ב-API? תגובה
<address> no
<AddressDetails> no
<Alias> לא רלוונטי אין תמיכה ב-<Model>
<altitude> no
<altitudeMode> no
<atom:author> כן
<atom:link> כן
<atom:name> כן
<BalloonStyle> באופן חלקי יש תמיכה רק ב-<text>
<begin> לא רלוונטי אין תמיכה ב-<TimeSpan>
<bgColor> no
<bottomFov> לא רלוונטי אין תמיכה ב-<PhotoOverlay>
<Camera> no
<שינוי> באופן חלקי יש תמיכה רק בשינויי סגנון
<color> באופן חלקי כולל #AABBGGRR ו- #BBGGRR; לא נתמך ב: <IconStyle> <ScreenOverlay> ו-<GroundOverlay>
<colorMode> no
<cookie> no
<coordinates> כן
<יצירה> no
<Data> כן
<מחיקה> no
<description> כן מותר להשתמש בתוכן HTML, אבל הוא עובר ניקוי כדי להגן מפני מתקפות בדפדפנים שונים. אין תמיכה בהחלפות של ישויות בטופס $[dataName].
<displayMode> no
<displayName> no
<Document> באופן חלקי במרומז, יש תמיכה בילדים; אין השפעה כצאצא של תכונות אחרות
<drawOrder> no
<east> כן
<end> לא רלוונטי אין תמיכה ב-<TimeSpan>
<expires> כן פרטים נוספים זמינים בקטע 'סיכום'
<ExtendedData> באופן חלקי אין תמיכה ב-untyped <Data> בלבד, ב-<SimpleData> או ב-<Schema>, ובהחלפות של ישויות בצורה $[dataName].
<extrude> no
<fill> כן
<flyToView> no
<תיקייה> כן
<geomColor> no הוצא משימוש
<GeometryCollection> no הוצא משימוש
<geomScale> no הוצא משימוש
<gridOrigin> לא רלוונטי אין תמיכה ב-<PhotoOverlay>
<GroundOverlay> כן לא ניתן לבצע רוטציה
<h> כן הוצא משימוש
<heading> כן
רמז כן תמיכה ב-target=...
<hotSpot> כן
<href> כן
<httpQuery> no
<Icon> כן לא ניתן לבצע רוטציה
<IconStyle> כן
<ImagePyramid> לא רלוונטי אין תמיכה ב-<PhotoOverlay>
<innerBoundaryIs> כן באופן מרומז מהסדר <LinearRing>
<ItemIcon> לא רלוונטי אין תמיכה ב-<ListStyle>
<key> לא רלוונטי אין תמיכה ב-<StyleMap>
<kml> כן
<labelColor> no הוצא משימוש
<LabelStyle> no
<latitude> כן
<LatLonAltBox> כן
<LatLonBox> כן
<leftFov> לא רלוונטי אין תמיכה ב-<PhotoOverlay>
<LinearRing> כן
<LineString> כן
<LineStyle> כן
<Link> כן
<linkDescription> no
<linkName> no
<linkSnippet> no
<listItemType> לא רלוונטי אין תמיכה ב-<ListStyle>
<ListStyle> no
<מיקום> לא רלוונטי אין תמיכה ב-<Model>
<Lod> כן
<longitude> כן
<LookAt> no
<maxAltitude> כן
<maxFadeExtent> כן
<maxHeight> לא רלוונטי אין תמיכה ב-<PhotoOverlay>
<maxLodPixels> כן
<maxSessionLength> no
<maxWidth> לא רלוונטי אין תמיכה ב-<PhotoOverlay>
<message> no
<Metadata> no הוצא משימוש
<minAltitude> כן
<minFadeExtent> כן
<minLodPixels> כן
<minRefreshPeriod> no <NetworkLink>
<Model> no
<MultiGeometry> באופן חלקי מעובדות אבל מוצגות כתכונות נפרדות בחלונית השמאלית
<name> כן
<near> (בקרבת מקום) לא רלוונטי אין תמיכה ב-<PhotoOverlay>
<NetworkLink> כן  
<NetworkLinkControl> באופן חלקי קיימת תמיכה חלקית ב-<Update> וב-<expires>. ה-API מתעלם מהגדרות תפוגה בכותרות ה-HTTP, אבל כן משתמש בהגדרות התפוגה שצוינו ב-KML. בהיעדר הגדרות תפוגה, או במסגרת פרק הזמן החוקי, יכול להיות שאפליקציית מפות Google תשמור במטמון נתונים שנשלפו מהאינטרנט, לפרקי זמן שלא צוינו. אפשר לאלץ אחזור מחדש של הנתונים מהאינטרנט על ידי שינוי שם המסמך ואחזור שלו בכתובת URL אחרת, או על ידי בדיקה שהמסמך מכיל הגדרות תפוגה מתאימות.
<north> כן
<open> כן
<Orientation> לא רלוונטי אין תמיכה ב-<Model>
<outerBoundaryIs> כן באופן מרומז מהסדר <LinearRing>
<outline> כן
<overlayXY> no
<Pair> לא רלוונטי אין תמיכה ב-<StyleMap>
<phoneNumber> no
<PhotoOverlay> no
<Placemark> כן
<Point> כן
<Polygon> כן
<PolyStyle> כן
<range> כן
<refreshInterval> באופן חלקי <Link> בלבד; לא ב <סמל>
<refreshMode> כן אין תמיכה בכותרות HTTP במצב 'onExpire'. אפשר לעיין בהערות לגבי <Update> ו-<expires> שלמעלה.
<refreshVisibility> no
<Region> כן
<ResourceMap> לא רלוונטי אין תמיכה ב-<Model>
<rightFov> לא רלוונטי אין תמיכה ב-<PhotoOverlay>
<roll> לא רלוונטי אין תמיכה בתכונות <מצלמה> ו-<Model>
<rotation> no
<rotationXY> no
<קנה מידה> לא רלוונטי אין תמיכה ב-<Model>
<scale> no
<Schema> no
<SchemaData> no
<ScreenOverlay> כן לא ניתן לבצע רוטציה
<screenXY> no
<shape> לא רלוונטי אין תמיכה ב-<PhotoOverlay>
<SimpleData> לא רלוונטי מאפייני <SchemaData> אינם נתמכים
<SimpleField> לא רלוונטי מאפייני <Schema> אינם נתמכים
<size> כן
<Snippet> כן
<south> כן
<state> לא רלוונטי אין תמיכה ב-<ListStyle>
<Style> כן
<StyleMap> no אין תמיכה באפקטים של גלילה (הדגשה)
<styleUrl> לא רלוונטי אין תמיכה ב-<StyleMap>
<targetHref> באופן חלקי נתמך ב-<Update>, לא ב-<Alias>
<tessellate> no
<text> כן אין תמיכה בהחלפה של $[geDirections]
<textColor> no
<tileSize> לא רלוונטי אין תמיכה ב-<PhotoOverlay>
<tilt> no
<TimeSpan> no
<TimeStamp> no
<topFov> לא רלוונטי אין תמיכה ב-<PhotoOverlay>
<עדכון> באופן חלקי רק שינויי סגנון, לא <Create> או <Delete>
<Url> כן הוצא משימוש
<value> כן
<viewBoundScale> no
<viewFormat> no
<viewRefreshMode> באופן חלקי האפשרות "onStop" נתמכת
<viewRefreshTime> כן
<ViewVolume> לא רלוונטי אין תמיכה ב-<PhotoOverlay>
<visibility> באופן חלקי כן ב <תיקייה> – סמנים צאצאים יורשים את הרשאות הגישה שלהם
<w> כן הוצא משימוש
<west> כן
<when> לא רלוונטי אין תמיכה ב-<TimeStamp>
<width> כן
<x> כן הוצא משימוש
<y> כן הוצא משימוש