שכבות KML ו-GeoRSS

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

KmlLayer מרנדר רכיבי KML ו-GeoRSS ל-שכבה מעל קטעי המפה של Maps JavaScript API.

סקירה כללית

‫Maps JavaScript API תומך בפורמטים של נתונים 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 הזה נראה (ובמידה מסוימת מתנהג) כמו רכיבי שכבת-על מוכרים של Maps JavaScript API. רכיבי 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 בשיטה setMap().
  • preserveViewport מציין שלא צריך להתאים את המפה לגבולות של התוכן של KmlLayer כשמציגים את השכבה. כברירת מחדל, כשמציגים KmlLayer, המפה עוברת זום ומוצבת כך שכל התוכן של השכבה מוצג.
  • suppressInfoWindows מציין שלחיצה על תכונות בתוך KmlLayer לא אמורה להפעיל את התצוגה של אובייקטים מסוג InfoWindow.

בנוסף, אחרי שה-KmlLayer מעובד, הוא מכיל מאפיין metadata קבוע שלא ניתן לשינוי עם השם, התיאור, התקציר והמחבר של השכבה בתוך אובייקט KmlLayerMetadata. אפשר לבדוק את המידע הזה באמצעות ה-method‏ 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. במקום זאת, כשתכונות מוצגות, הן עוברות עיבוד כך שהן נראות כמו שכבות-על של Maps JavaScript API שאפשר ללחוץ עליהן. כשלוחצים על תכונות בודדות, מוצג כברירת מחדל InfoWindow שמכיל מידע על KML <title> ועל <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

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

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

גודל הקובץ המרבי שאותו ניתן לטעון (KML גולמי, GeoRSS גולמי או KMZ דחוס)
3MB
הגודל המרבי של קובץ KML לא דחוס
10MB
הגודל המקסימלי של קובץ תמונה לא דחוס בקובצי KMZ
500KB לכל קובץ
מספר הקישורים המקסימלי ברשת
10
המספר המרבי של פריטים במסמך
1,000
מספר שכבות KML
יש הגבלה על מספר שכבות ה-KML שאפשר להציג במפת Google אחת. אם תחרגו מהמגבלה הזו, אף אחת מהשכבות לא תופיע במפה, ותוצג שגיאה בלוח Javascript של דפדפן האינטרנט. המגבלה מבוססת על שילוב של מספר הכיתות שנוצרו והאורך הכולל של כל כתובות ה-URL ששימשו ליצירת השכבות האלה.KmlLayer כל 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. למשתמשים יישלחו רק תכונות שאפשר להציג באופן אוטומטי.

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

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

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

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

  • סמנים
  • סמלים
  • תיקיות
  • תיאור HTML – החלפת ישות באמצעות <BalloonStyle> ו-<text>
  • KMZ (compressed 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> כן אין תמיכה בכותרות HTTP במצב onExpire. ראו את ההערות לגבי התגים <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> באופן חלקי ‫yes בתג <Folder> – סימני מיקום צאצאים יורשים את המאפיין visibility
<w> כן הוצא משימוש
<west> כן
<when> לא רלוונטי אין תמיכה ב-<TimeStamp>
<width> כן
<x> כן הוצא משימוש
<y> כן הוצא משימוש