طبقات KML وGeoRSS

اختيار النظام الأساسي: Android iOS JavaScript

تعرض السمة KmlLayer عناصر KML وGeoRSS في تراكب مربّعات واجهة برمجة التطبيقات بلغة JavaScript للخرائط.

نظرة عامة

تتوافق واجهة برمجة تطبيقات JavaScript للخرائط مع تنسيقات بيانات KML وGeoRSS لعرض المعلومات الجغرافية. يتم عرض تنسيقات البيانات هذه على خريطة باستخدام كائن KmlLayer تأخذ بنائه عنوان URL لملف KML أو GeoRSS متاح للجميع.

ملاحظة: تستخدم الفئة KmlLayer التي تنشئ طبقات KML في واجهة برمجة تطبيقات JavaScript للخرائط خدمة تستضيفها Google لتحليل ملفات KML وتحليلها من أجل عرضها. وبالتالي، لا يمكن عرض ملفات KML إلا إذا تمت استضافتها على عنوان URL متاح للجميع ولا يتطلب مصادقة للوصول إليه.

إذا كنت تطلب الوصول إلى ملفات خاصة، أو تحكُّمًا أكثر دقة في ذاكرات التخزين المؤقت، أو إرسال إطار عرض المتصفح إلى خادم بيانات جغرافية مكانية كمَعلمة طلب بحث، ننصحك باستخدام طبقات البيانات بدلاً من KmlLayer. سيؤدّي هذا الإجراء إلى توجيه متصفِّحات المستخدمين إلى طلب الموارد مباشرةً من خادم الويب.

تحوِّل واجهة Maps JavaScript API بيانات XML الجغرافية المقدَّمة إلى تمثيل KML يتم عرضه على الخريطة باستخدام تراكب مربّعات واجهة برمجة التطبيقات JavaScript للخرائط. يبدو ملف KML هذا (ويتصرف فيه نوعًا ما) مثل عناصر تركيب JavaScript API المألوفة للخرائط. يتم عرض عناصر KML <Placemark> وGeoRSS point كعلامات. على سبيل المثال، يتم عرض عناصر <LineString> على شكل خطوط متعدّدة، بينما يتم عرض عناصر <Polygon> على شكل مضلعات. وبالمثل، يتم عرض عناصر <GroundOverlay> على هيئة صور مستطيلة على الخريطة. والأهم من ذلك أنّ هذه الكائنات ليست واجهة برمجة تطبيقات JavaScript للخرائط Markers أو Polylines أو Polygons أو GroundOverlays، بل يتم عرضها في عنصر واحد على الخريطة.

يظهر عناصر KmlLayer على الخريطة بعد ضبط السمة map. يمكنك إزالتها من الخريطة من خلال استدعاء setMap() عبر تمرير null. ويدير الكائن KmlLayer عرض هذه العناصر الفرعية من خلال استرداد العناصر المناسبة تلقائيًا لحدود الخريطة. ومع تغيير الحدود، يتم عرض العناصر في إطار العرض الحالي تلقائيًا.

وبما أنّ المكونات ضمن KmlLayer يتم عرضها عند الطلب، تسمح لك هذه الطبقة بسهولة إدارة عرض آلاف العلامات والخطوط المتعددة والمضلعات. يُرجى العِلم أنّه لا يمكنك الوصول إلى هذه العناصر الفردية مباشرةً، على الرغم من أنّ كل عنصر يوفّر أحداثًا متعلقة بالنقرات تعرض بيانات حول تلك العناصر الفردية.

خيارات طبقات KML

تعمل الدالة الإنشائية KmlLayer() اختياريًا على تمرير عدد من KmlLayerOptions:

  • تحدّد map السمة Map المطلوب عرض KmlLayer عليها. يمكنك إخفاء KmlLayer من خلال ضبط هذه القيمة على null في الطريقة 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>
    <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>

تجربة العينة

ينشئ المثال التالي 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>
    <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. يؤدي النقر على عناصر فردية تلقائيًا إلى إظهار InfoWindow يحتوي على معلومات حول <title> و <description> حول الميزة المحددة. بالإضافة إلى ذلك، يؤدي النقر على ميزة KML إلى إنشاء علامة KmlMouseEvent تنقل المعلومات التالية:

  • تشير السمة position إلى إحداثيات خط العرض/خط الطول التي يجب تثبيت InfoWindow عليها لميزة KML هذه. ويكون هذا الموضع بشكل عام هو الموقع الذي تم النقر عليه في المضلعات والخطوط المتعددة وGroundOverlays، ولكنه المصدر الحقيقي للعلامات.
  • تشير السمة 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"
}

يعرض المثال التالي نص <Description> لميزة KML ضمن <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>
    <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

تفرض واجهة برمجة تطبيقات JavaScript للخرائط قيودًا على حجم ملفات KML التي يتم تحميلها ومدى تعقيدها. في ما يلي ملخّص بالحدود الحالية.

ملاحظة: تخضع هذه الحدود للتغيير في أي وقت.

جلب الحد الأقصى من حجم الملف (KML غير منسق، أو GeoRSS غير منسق، أو KMZ مضغوط)
3 ميغابايت
الحد الأقصى لحجم ملف KML غير مضغوط
10 ميغابايت
الحد الأقصى لحجم ملف الصورة غير المضغوط في ملفات KMZ
500 كيلوبايت لكل ملف
الحد الأقصى لعدد روابط الشبكة
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 على مرة واحدة في الدقيقة.

    إذا كان إجمالي حجم جميع الملفات يتجاوز 1 ميغابايت (غير مضغوطة)، يجب تقليص حجم التغييرات إلى مرة واحدة كل 5 دقائق.
  • عند استخدام خادم بيانات جيوفضائية، تجنَّب استخدام مَعلمات طلب البحث للحدّ من إطار عرض الطبقات.

    بدلاً من ذلك، يمكنك تحديد إطار عرض الخريطة باستخدام حدث bounds_changed. سيتم إرسال الميزات التي يمكن عرضها تلقائيًا فقط للمستخدمين.

    إذا كان هناك قدر كبير من البيانات في خادم البيانات الجيوفضائية، ننصحك باستخدام طبقات البيانات بدلاً من ذلك.
  • عند استخدام خادم بيانات جيوفضائية، استخدِم عدة KmlLayer لكل مجموعة من الميزات التي تريد السماح للمستخدمين بتبديلها، بدلاً من استخدام سمة KmlLayer واحدة بمعلَمات طلب بحث مختلفة.
  • استخدم ملفات KMZ المضغوطة لتقليل حجم الملف.
  • إذا كنت تستخدم Google Cloud Storage أو حلاً آخر للتخزين في السحابة الإلكترونية، تجنَّب استخدام ميزات مثل عناوين URL الموقَّعة أو الرموز المميّزة المؤقتة لفرض عناصر التحكّم في الوصول. ويمكن أن تؤدي هذه الأخطاء إلى منع التخزين المؤقت عن غير قصد.
  • قلِّل دقة جميع النقاط إلى درجة دقة مناسبة.
  • ادمج هندسة الخصائص المتشابهة وتبسيطها، مثل المضلّعات والخطوط المتعددة.
  • أزِل أي عناصر أو موارد صور غير مستخدَمة.
  • أزِل أي عناصر غير متوافقة.

إذا كنت تريد الوصول إلى البيانات الخاصة أو منع التخزين المؤقت أو إرسال إطار عرض المتصفّح إلى خادم بيانات جيوفضائية باعتباره مَعلمة طلب بحث، ننصحك باستخدام طبقات البيانات بدلاً من KmlLayer. سيؤدّي هذا الإجراء إلى توجيه متصفِّحات المستخدمين إلى طلب الموارد مباشرةً من خادم الويب.

عناصر KML المعتمدة

تتوافق واجهة برمجة تطبيقات JavaScript للخرائط مع عناصر KML التالية. يتجاهل المحلل اللغوي لـ KML عادة علامات XML التي لا يفهمها.

  • علامات موضعية
  • الرموز
  • المجلدات
  • HTML الوصفي: استبدال الكيان من خلال <BalloonStyle> و<text>
  • KMZ‏ (KML مضغوط، بما في ذلك الصور المرفقة)
  • الخطوط المتعددة والمضلعات
  • نمط الخطوط المتعددة والمضلعات، بما في ذلك اللون، والتعبئة، والتعتيم
  • روابط الشبكة لاستيراد البيانات ديناميكيًا
  • تراكبات الأرض وتراكبات الشاشة

يقدم الجدول التالي تفاصيل كاملة عن عناصر KML المتوافقة.

عنصر KML متاح في واجهة برمجة التطبيقات؟ تعليق
<address> لا
<AddressDetails> لا
<Alias> لا ينطبق <النموذج> غير متاح.
<altitude> لا
<altitudeMode> لا
<atom:author> نعم
<atom:link> نعم
<atom:name> نعم
<BalloonStyle> جزئيًا لا يتوفر سوى <text>
<begin> لا ينطبق <TimeSpan> غير متاح
<bgColor> لا
<bottomFov> لا ينطبق لا يمكن استخدام < PhotoOverlay>
<Camera> لا
<تغيير> جزئيًا لا يُسمح إلا بتغييرات الأنماط
<color> جزئيًا تتضمن #AABBGGRR و #BBGGRR، وهي غير متاحة في <IconStyle> و<ScreenOverlay> و <GroundOverlay>
<colorMode> لا
<cookie> لا
<coordinates> نعم
<إنشاء> لا
<Data> نعم
<حذف> لا
<description> نعم يُسمح بمحتوى HTML، ولكن يتم تحسينه للحماية من الهجمات التي تتم على جميع المتصفّحات. لا يمكن استبدال العناصر بالنموذج $[dataName].
<displayMode> لا
<displayName> لا
<Document> جزئيًا سنتيح للأطفال بشكل ضمني، ولا يكون لذلك أي تأثير سلبي كطفل للميزات الأخرى
<drawOrder> لا
<east> نعم
<end> لا ينطبق <TimeSpan> غير متاح
<expires> نعم يُرجى الاطّلاع على قسم "الملخص" للحصول على التفاصيل.
<ExtendedData> جزئيًا <Data> بدون كتابة فقط، ولا يمكن استخدام <SimpleData> أو <Schema>، واستبدال الكيان بالنموذج $[dataName].
<extrude> لا
<fill> نعم
<flyToView> لا
<مجلد> نعم
<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> لا
<الموقع الجغرافي> لا ينطبق <النموذج> غير متاح.
<Lod> نعم
<longitude> نعم
<LookAt> لا
<maxAltitude> نعم
<maxFadeExtent> نعم
<maxHeight> لا ينطبق لا يمكن استخدام < PhotoOverlay>
<maxLodPixels> نعم
<maxSessionLength> لا
<maxWidth> لا ينطبق لا يمكن استخدام < PhotoOverlay>
<message> لا
<Metadata> لا متوقفة نهائيًا
<minAltitude> نعم
<minFadeExtent> نعم
<minLodPixels> نعم
<minRefreshPeriod> لا <NetworkLink>
<النموذج> لا
<MultiGeometry> جزئيًا تم عرضه ولكن كميزات منفصلة في اللوحة اليمنى
<name> نعم
<بالقرب> لا ينطبق لا يمكن استخدام < PhotoOverlay>
<NetworkLink> نعم  
<NetworkLinkControl> جزئيًا يتوفر <تحديث> و <انتهاء الصلاحية> جزئيًا. وتتجاهل واجهة برمجة التطبيقات إعدادات انتهاء الصلاحية في عناوين HTTP ولكنها تستخدم إعدادات انتهاء الصلاحية المحدّدة في KML. في حال عدم ضبط إعدادات انتهاء الصلاحية، أو خلال الفترة الزمنية للصلاحية، قد تخزّن "خرائط Google" البيانات التي تم جلبها من الإنترنت مؤقتًا لفترات غير محدّدة. ويمكن فرض إعادة جلب البيانات من الإنترنت من خلال إعادة تسمية المستند وجلبه ضمن عنوان URL مختلف أو من خلال التأكد من احتواء المستند على إعدادات مناسبة لانتهاء الصلاحية.
<north> نعم
<open> نعم
<Orientation> لا ينطبق <النموذج> غير متاح.
<outerBoundaryIs> نعم بشكل ضمني من ترتيب <LinearRing>
<outline> نعم
<overlayXY> لا
<Pair> لا ينطبق لا يمكن استخدام <StyleMap>.
<phoneNumber> لا
<PhotoOverlay> لا
<Placemark> نعم
<Point> نعم
<Polygon> نعم
<PolyStyle> نعم
<range> نعم
<refreshInterval> جزئيًا <الرابط> فقط، وليس في <Icon>
<refreshMode> نعم رؤوس HTTP غير متوافقة مع وضع "onExpire". يمكنك الاطّلاع على الملاحظات بشأن <التحديث> و <انتهاء الصلاحية> أعلاه.
<refreshVisibility> لا
<Region> نعم
<ResourceMap> لا ينطبق <النموذج> غير متاح.
<rightFov> لا ينطبق لا يمكن استخدام < PhotoOverlay>
<roll> لا ينطبق لا يمكن استخدام <الكاميرا> و <النموذج>.
<rotation> لا
<rotationXY> لا
<مقياس> لا ينطبق <النموذج> غير متاح.
<scale> لا
<Schema> لا
<SchemaData> لا
<ScreenOverlay> نعم يتعذر تدوير الجهاز
<screenXY> لا
<shape> لا ينطبق لا يمكن استخدام < PhotoOverlay>
<SimpleData> لا ينطبق لا يمكن استخدام <SchemaData>.
<SimpleField> لا ينطبق لا يُسمح باستخدام <Schema>.
<size> نعم
<Snippet> نعم
<south> نعم
<state> لا ينطبق <ListStyle> غير متاح
<Style> نعم
<StyleMap> لا لا يمكن استخدام تأثيرات التمرير (التمييز)
<styleUrl> لا ينطبق لا يمكن استخدام <StyleMap>.
<targetHref> جزئيًا متاح في <تحديث>، وليس في <Alias>
<tessellate> لا
<text> نعم لا يمكن استبدال $[geDirections]
<textColor> لا
<tileSize> لا ينطبق لا يمكن استخدام < PhotoOverlay>
<tilt> لا
<TimeSpan> لا
<TimeStamp> لا
<topFov> لا ينطبق لا يمكن استخدام < PhotoOverlay>
<تعديل> جزئيًا تغييرات النمط فقط، وليس <إنشاء> أو <حذف>
<Url> نعم متوقفة نهائيًا
<value> نعم
<viewBoundScale> لا
<viewFormat> لا
<viewRefreshMode> جزئيًا ميزة "onStop" متاحة
<viewRefreshTime> نعم
<ViewVolume> لا ينطبق لا يمكن استخدام < PhotoOverlay>
<visibility> جزئيًا نعم على <المجلد> - تكتسب العلامات الموضعية الثانوية مستوى ظهورها.
<w> نعم متوقفة نهائيًا
<west> نعم
<when> لا ينطبق السمة <TimeStamp> غير متاحة
<width> نعم
<x> نعم متوقفة نهائيًا
<y> نعم متوقفة نهائيًا