طبقات KML وGeoRSS

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

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

نظرة عامة

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

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

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

تعمل واجهة برمجة تطبيقات JavaScript للخرائط على تحويل بيانات XML الجغرافية المقدّمة إلى تمثيل KML يتم عرضه على الخريطة باستخدام تراكب مربّعات واجهة برمجة تطبيقات JavaScript على "خرائط Google". يشبه ملف KML هذا (ويتصرف إلى حدّ ما) عناصر تراكب JavaScript API لخرائط Google المألوفة. يتم عرض عنصرَي 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>

    <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 للخرائط. يؤدي النقر على ميزات فردية إلى إظهار InfoWindow يحتوي على معلومات KML <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>

    <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 للخرائط قيودًا على حجم ملفات 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> 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> جزئيًا فقط <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>
<الطراز> no
<MultiGeometry> جزئيًا ولكن يتم عرضها كميزات منفصلة في اللوحة الجانبية اليمنى
<name> نعم
<بالقرب> لا ينطبق لا يتم توفير <PhotoOverlay>
<NetworkLink> نعم  
<NetworkLinkControl> جزئيًا يتوفر <Update> و <expires> جزئيًا. تتجاهل واجهة برمجة التطبيقات إعدادات انتهاء الصلاحية في عناوين 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> فقط، وليس في <Icon>
<refreshMode> نعم لا تتوافق عناوين HTTP مع وضع onExpire. اطّلِع على الملاحظات حول <Update> و <expires> أعلاه.
<refreshVisibility> no
<Region> نعم
<ResourceMap> لا ينطبق <Model> غير متوافق
<rightFov> لا ينطبق لا يتم توفير <PhotoOverlay>
<roll> لا ينطبق <الكاميرا> و <الطراز> غير متوافقَين
<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>
<تحديث> جزئيًا تغييرات النمط فقط، وليس <إنشاء> أو <حذف>
<Url> نعم متوقفة نهائيًا
<value> نعم
<viewBoundScale> no
<viewFormat> no
<viewRefreshMode> جزئيًا الخيار "onStop" متاح
<viewRefreshTime> نعم
<ViewVolume> لا ينطبق لا يتم توفير <PhotoOverlay>
<visibility> جزئيًا نعم في <مجلد> - تكتسب العلامات الموضعية الفرعية مستوى ظهورها.
<w> نعم متوقفة نهائيًا
<west> نعم
<when> لا ينطبق <TimeStamp> غير متاح
<width> نعم
<x> نعم متوقفة نهائيًا
<y> نعم متوقفة نهائيًا