Lớp KML và GeoRSS

Chọn nền tảng: Android iOS JavaScript

KmlLayer kết xuất các phần tử KML và GeoRSS vào một lớp phủ ô API Maps JavaScript.

Tổng quan

API JavaScript của Maps hỗ trợ các định dạng dữ liệu KML và GeoRSS để hiển thị thông tin địa lý. Những định dạng dữ liệu này được hiển thị trên bản đồ bằng cách sử dụng đối tượng KmlLayer, trong đó hàm khởi tạo sẽ lấy URL của một tệp KML hoặc GeoRSS có thể truy cập công khai.

Lưu ý: Lớp KmlLayer tạo lớp phủ KML trong API JavaScript của Maps sẽ sử dụng một dịch vụ do Google lưu trữ để truy xuất và phân tích cú pháp các tệp KML nhằm kết xuất. Do đó, bạn chỉ có thể hiển thị các tệp KML nếu những tệp đó được lưu trữ tại một URL có thể truy cập công khai mà không yêu cầu xác thực để truy cập.

Nếu cần quyền truy cập vào các tệp riêng tư, kiểm soát chi tiết bộ nhớ đệm hoặc gửi khung nhìn của trình duyệt đến máy chủ dữ liệu không gian địa lý dưới dạng tham số truy vấn, bạn nên sử dụng lớp dữ liệu thay vì KmlLayer. Thao tác này sẽ chuyển hướng trình duyệt của người dùng đến trực tiếp yêu cầu tài nguyên từ máy chủ web của bạn.

API JavaScript của Maps chuyển đổi dữ liệu XML địa lý được cung cấp thành một bản trình bày KML hiển thị trên bản đồ bằng cách sử dụng lớp phủ ô xếp kề API Maps JavaScript. KML này trông giống (và có phần hoạt động) giống như các phần tử lớp phủ API Maps JavaScript quen thuộc. Các phần tử KML <Placemark> và GeoRSS point được kết xuất dưới dạng điểm đánh dấu, ví dụ: các phần tử <LineString> được kết xuất dưới dạng nhiều đường và các phần tử <Polygon> được kết xuất dưới dạng đa giác. Tương tự, các phần tử <GroundOverlay> được kết xuất dưới dạng hình ảnh hình chữ nhật trên bản đồ. Tuy nhiên, điều quan trọng là những đối tượng này không phải là API JavaScript của Maps Markers, Polylines, Polygons hoặc GroundOverlays; thay vào đó, chúng được kết xuất thành một đối tượng duy nhất trên bản đồ.

Các đối tượng KmlLayer sẽ xuất hiện trên bản đồ sau khi thuộc tính map của các đối tượng đó được đặt. Bạn có thể xoá các đối tượng đó khỏi bản đồ bằng cách gọi setMap() truyền null. Đối tượng KmlLayer quản lý quá trình kết xuất các phần tử con này bằng cách tự động truy xuất các tính năng thích hợp cho những ranh giới nhất định của bản đồ. Khi giới hạn thay đổi, các tính năng trong khung nhìn hiện tại sẽ tự động hiển thị.

Vì các thành phần trong KmlLayer được kết xuất theo yêu cầu, nên lớp này cho phép bạn dễ dàng quản lý việc kết xuất hàng nghìn điểm đánh dấu, hình nhiều đường và đa giác. Xin lưu ý rằng bạn không thể trực tiếp truy cập vào các đối tượng cấu thành này, mặc dù mỗi đối tượng đều cung cấp các sự kiện nhấp chuột trả về dữ liệu trên các đối tượng riêng lẻ đó.

Tùy chọn lớp KML

Hàm khởi tạo KmlLayer() có thể tuỳ ý truyền một số KmlLayerOptions:

  • map chỉ định Map để kết xuất KmlLayer. Bạn có thể ẩn KmlLayer bằng cách đặt giá trị này thành null trong phương thức setMap().
  • preserveViewport chỉ định rằng bản đồ không nên được điều chỉnh theo giới hạn nội dung của KmlLayer khi hiển thị lớp. Theo mặc định, khi hiển thị KmlLayer, bản đồ sẽ được thu phóng và định vị để hiển thị toàn bộ nội dung của lớp.
  • suppressInfoWindows cho biết rằng các tính năng có thể nhấp trong KmlLayer không được kích hoạt màn hình của các đối tượng InfoWindow.

Ngoài ra, sau khi KmlLayer được kết xuất, lớp này sẽ chứa một thuộc tính metadata không thể thay đổi có chứa tên, nội dung mô tả, đoạn trích và tác giả của lớp trong giá trị cố định của một đối tượng KmlLayerMetadata. Bạn có thể kiểm tra thông tin này bằng phương thức getMetadata(). Vì việc hiển thị đối tượng KmlLayer yêu cầu giao tiếp không đồng bộ với máy chủ bên ngoài, nên bạn cần theo dõi sự kiện metadata_changed để cho biết thuộc tính này đã được điền sẵn.

Ví dụ sau đây tạo KmlLayer từ nguồn cấp dữ liệu 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>

Thử dùng mẫu

Ví dụ sau đây tạo KmlLayer từ nguồn cấp dữ liệu KML đã cho:

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>

Thử dùng mẫu

Thông tin chi tiết về tính năng KML

Vì KML có thể chứa một số lượng lớn đối tượng, nên bạn không thể truy cập trực tiếp vào dữ liệu đối tượng từ đối tượng KmlLayer. Thay vào đó, khi được hiển thị, các đối tượng sẽ được kết xuất để trông giống như lớp phủ API Maps JavaScript có thể nhấp vào. Theo mặc định, khi nhấp vào từng đối tượng, bạn sẽ thấy một InfoWindow chứa thông tin KML <title><description> về đối tượng cụ thể đó. Ngoài ra, một lượt nhấp vào một đối tượng KML sẽ tạo ra một KmlMouseEvent, truyền những thông tin sau:

  • position cho biết vĩ độ/kinh độ của vị trí cố định InfoWindow cho đối tượng KML này. Vị trí này thường là vị trí được nhấp của đa giác, hình nhiều đường và GroundOverlays, nhưng là nguồn gốc thực sự của điểm đánh dấu.
  • pixelOffset biểu thị độ lệch từ position ở trên để neo "đuôi" InfoWindow. Đối với đối tượng đa giác, độ lệch này thường là 0,0 nhưng đối với điểm đánh dấu thì bao gồm chiều cao của điểm đánh dấu.
  • featureData chứa cấu trúc JSON của KmlFeatureData.

Dưới đây là đối tượng KmlFeatureData mẫu:

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

Ví dụ sau đây hiển thị văn bản <Description> của đối tượng KML bên trong <div> bên khi người dùng nhấp vào đối tượng này:

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>

Thử dùng mẫu

Hạn chế về kích thước và độ phức tạp khi kết xuất KML

API JavaScript của Maps có những giới hạn về kích thước và độ phức tạp của các tệp KML đã tải. Dưới đây là thông tin tóm tắt về các hạn mức hiện tại.

Lưu ý: Những giới hạn này có thể thay đổi bất cứ lúc nào.

Kích thước tối đa của tệp đã tìm nạp (KML thô, GeoRSS thô hoặc KMZ đã nén)
3MB
Kích thước tối đa của tệp KML đã giải nén
10MB
Kích thước tối đa của tệp hình ảnh không nén trong tệp KMZ
500KB mỗi tệp
Số lượng đường liên kết mạng tối đa
10
Tổng số lượng đối tượng địa lý tối đa trong toàn tài liệu
1.000
Số lớp KML
Có giới hạn về số lượng Lớp KML có thể hiển thị trên một Bản đồ của Google. Nếu bạn vượt quá giới hạn này, sẽ không có lớp nào của bạn xuất hiện trên bản đồ và lỗi sẽ được báo cáo trong bảng điều khiển JavaScript của trình duyệt web của bạn. Giới hạn này dựa trên tổ hợp số lượng lớp KmlLayer đã tạo và tổng chiều dài của tất cả URL dùng để tạo các lớp đó. Mỗi KmlLayer mới mà bạn tạo sẽ chiếm một phần giới hạn cho lớp và một phần giới hạn nữa tuỳ thuộc vào độ dài của URL nơi tệp KML được tải. Do đó, số lượng lớp bạn có thể thêm sẽ khác nhau tuỳ theo ứng dụng. Trung bình, bạn có thể tải từ 10 đến 20 lớp mà không đạt đến giới hạn. Nếu bạn vẫn đạt đến giới hạn, hãy sử dụng một công cụ rút ngắn URL để rút ngắn các URL KML. Ngoài ra, hãy tạo một tệp KML duy nhất bao gồm NetworkLinks cho các URL KML riêng lẻ.

Những điều cần cân nhắc về hiệu suất và việc lưu vào bộ nhớ đệm

Các máy chủ của Google sẽ tạm thời lưu các tệp KML vào bộ nhớ đệm để giảm tải cho máy chủ của bạn. Điều này cũng sẽ cải thiện hiệu suất cho người dùng bằng cách hiển thị các phân đoạn thích hợp trong tệp KML theo cách hiệu quả về không gian, khi người dùng nhấp vào, xoay và thu phóng bản đồ.

Để đạt được hiệu suất tốt nhất, bạn nên:

  • Sử dụng một thẻ <expires> thích hợp trong KML.

    KmlLayer sẽ không sử dụng tiêu đề HTTP khi quyết định cách lưu các tệp KML vào bộ nhớ đệm.
  • Đừng tạo tệp một cách linh động tại thời điểm yêu cầu.

    Thay vào đó, hãy tạo các tệp trước khi cần đến và phân phát các tệp đó tĩnh. Nếu máy chủ của bạn mất nhiều thời gian để truyền tệp KML, KmlLayer có thể không hiển thị.
  • Đừng tìm cách bỏ qua bộ nhớ đệm trừ phi bạn biết rõ ràng rằng tệp của mình đã được cập nhật.

    Luôn bỏ qua bộ nhớ đệm (ví dụ: bằng cách thêm một số ngẫu nhiên hoặc thời gian theo đồng hồ của người dùng làm tham số truy vấn) có thể dễ dàng khiến máy chủ của bạn bị quá tải nếu trang web của bạn đột nhiên trở nên phổ biến và bạn đang phân phát các tệp KML có dung lượng lớn.

    Điều này cũng có thể khiến bộ nhớ đệm phân phát dữ liệu cũ cho người dùng nếu đồng hồ của bất kỳ người dùng nào không chính xác và thẻ <expires> không được đặt chính xác.

    Thay vào đó, hãy phát hành các tệp tĩnh được cập nhật bằng số bản sửa đổi mới, riêng biệt và sử dụng mã phía máy chủ để cập nhật linh động URL được truyền đến KmlLayer với phiên bản hiện tại.
  • Giới hạn các thay đổi đối với tệp KML thành một lần mỗi phút.

    Nếu tất cả các tệp có kích thước lớn hơn 1 MB (chưa nén), hãy giới hạn thay đổi thành một lần mỗi 5 phút.
  • Khi sử dụng máy chủ dữ liệu không gian địa lý, tránh sử dụng tham số truy vấn để giới hạn khung nhìn của các lớp.

    Thay vào đó, bạn có thể giới hạn khung nhìn bản đồ bằng sự kiện bounds_changed. Người dùng sẽ chỉ nhận được các tính năng có thể hiển thị tự động.

    Nếu có một lượng lớn dữ liệu trong máy chủ dữ liệu không gian địa lý của bạn, hãy cân nhắc sử dụng lớp dữ liệu.
  • Khi sử dụng máy chủ dữ liệu không gian địa lý, hãy sử dụng nhiều KmlLayer cho từng nhóm tính năng mà bạn muốn cho phép người dùng bật/tắt, thay vì một KmlLayer duy nhất với nhiều tham số truy vấn.
  • Sử dụng tệp KMZ được nén để giảm kích thước tệp.
  • Nếu bạn đang dùng Google Cloud Storage hoặc một giải pháp bộ nhớ trên đám mây khác, hãy tránh dùng các tính năng như URL đã ký hoặc mã thông báo tạm thời để thực thi các chế độ kiểm soát quyền truy cập. Các dữ liệu này có thể vô tình ngăn chặn việc lưu vào bộ nhớ đệm.
  • Giảm độ chính xác của mọi điểm xuống độ chính xác thích hợp.
  • Hợp nhất và đơn giản hoá hình học của các đối tượng tương tự nhau, chẳng hạn như đa giác và hình nhiều đường.
  • Xoá mọi phần tử hoặc tài nguyên hình ảnh không dùng đến.
  • Xoá mọi thành phần không được hỗ trợ.

Nếu cần truy cập dữ liệu riêng tư, ngăn chặn việc lưu vào bộ nhớ đệm hoặc gửi khung nhìn của trình duyệt đến máy chủ dữ liệu không gian địa lý dưới dạng tham số truy vấn, bạn nên sử dụng lớp dữ liệu thay vì KmlLayer. Thao tác này sẽ chuyển hướng trình duyệt của người dùng đến trực tiếp yêu cầu tài nguyên từ máy chủ web của bạn.

Phần tử KML được hỗ trợ

API JavaScript của Maps hỗ trợ những phần tử KML sau đây. Trình phân tích cú pháp KML thường bỏ qua trong im lặng những thẻ XML mà trình này không hiểu.

  • Dấu vị trí
  • Biểu tượng
  • Thư mục
  • HTML mô tả – Sự thay thế thực thể thông qua <BalloonStyle> và <text>
  • KMZ (KML đã nén, bao gồm cả hình ảnh đính kèm)
  • Hình nhiều đường và đa giác
  • Kiểu hình nhiều đường và đa giác, bao gồm màu, phủ màu và độ mờ
  • Liên kết mạng để nhập dữ liệu động
  • Lớp phủ mặt đất và lớp phủ màn hình

Bảng sau đây cung cấp đầy đủ thông tin chi tiết về các phần tử KML được hỗ trợ.

Phần tử KML Có được hỗ trợ trong API? Bình luận
<address> no
<AddressDetails> no
<Alias> Không áp dụng Không hỗ trợ <Model>
<altitude> no
<altitudeMode> no
<atom:author>
<atom:link>
<atom:name>
<BalloonStyle> một phần chỉ hỗ trợ <text>
<begin> Không áp dụng Không hỗ trợ <TimeSpan>
<bgColor> no
<bottomFov> Không áp dụng <PhotoOverlay> không được hỗ trợ
<Camera> no
<Thay đổi> một phần chỉ hỗ trợ thay đổi kiểu
<color> một phần bao gồm #AABBGGRR và #BBGGRR; không được hỗ trợ trong <IconStyle>, <ScreenOverlay> và <GroundOverlay>
<colorMode> no
<cookie> no
<coordinates>
<Tạo> no
<Data>
<Xoá> no
<description> Chúng tôi cho phép sử dụng nội dung HTML nhưng đã dọn dẹp nội dung để bảo vệ bạn khỏi các cuộc tấn công trên nhiều trình duyệt. Chúng tôi không hỗ trợ việc thay thế thực thể của biểu mẫu $[dataName].
<displayMode> no
<displayName> no
<Document> một phần hoàn toàn, các phần tử con sẽ được hỗ trợ; không có hiệu lực khi là phần tử con của các Tính năng khác
<drawOrder> no
<east>
<end> Không áp dụng Không hỗ trợ <TimeSpan>
<expires> hãy xem phần Tóm tắt để biết chi tiết
<ExtendedData> một phần chỉ <Data> chưa được nhập, không hỗ trợ <SimpleData> hoặc <Schema>, và không hỗ trợ việc thay thế thực thể của biểu mẫu $[dataName].
<extrude> no
<fill>
<flyToView> no
<Thư mục>
<geomColor> no không dùng nữa
<GeometryCollection> no không dùng nữa
<geomScale> no không dùng nữa
<gridOrigin> Không áp dụng <PhotoOverlay> không được hỗ trợ
<GroundOverlay> không thể xoay
<h> không dùng nữa
<heading>
gợi ý Có hỗ trợ target=...
<hotSpot>
<href>
<httpQuery> no
<Icon> không thể xoay
<IconStyle>
<ImagePyramid> Không áp dụng <PhotoOverlay> không được hỗ trợ
<innerBoundaryIs> hoàn toàn từ thứ tự <LinearRing>
<ItemIcon> Không áp dụng <ListStyle> không được hỗ trợ
<key> Không áp dụng <StyleMap> không được hỗ trợ
<kml>
<labelColor> no không dùng nữa
<LabelStyle> no
<latitude>
<LatLonAltBox>
<LatLonBox>
<leftFov> Không áp dụng <PhotoOverlay> không được hỗ trợ
<LinearRing>
<LineString>
<LineStyle>
<Link>
<linkDescription> no
<linkName> no
<linkSnippet> no
<listItemType> Không áp dụng <ListStyle> không được hỗ trợ
<ListStyle> no
<Vị trí> Không áp dụng Không hỗ trợ <Model>
<Lod>
<longitude>
<LookAt> no
<maxAltitude>
<maxFadeExtent>
<maxHeight> Không áp dụng <PhotoOverlay> không được hỗ trợ
<maxLodPixels>
<maxSessionLength> no
<maxWidth> Không áp dụng <PhotoOverlay> không được hỗ trợ
<message> no
<Metadata> no không dùng nữa
<minAltitude>
<minFadeExtent>
<minLodPixels>
<minRefreshPeriod> no <NetworkLink>
<Mẫu> no
<MultiGeometry> một phần hiển thị nhưng hiển thị dưới dạng các đối tượng riêng biệt trong bảng điều khiển bên trái
<name>
<gần> Không áp dụng <PhotoOverlay> không được hỗ trợ
<NetworkLink>  
<NetworkLinkControl> một phần Tính năng <Update> và <expires> được hỗ trợ một phần. API bỏ qua chế độ cài đặt ngày hết hạn trong các tiêu đề HTTP nhưng có sử dụng chế độ cài đặt ngày hết hạn được chỉ định trong KML. Trong trường hợp không có chế độ cài đặt ngày hết hạn hoặc trong khoảng thời gian hợp lệ, Google Maps có thể lưu dữ liệu đã tìm nạp từ Internet vào bộ nhớ đệm trong khoảng thời gian không xác định. Bạn có thể buộc phải tìm nạp lại dữ liệu từ Internet bằng cách đổi tên tài liệu và tìm nạp trong một URL khác hoặc đảm bảo rằng tài liệu chứa chế độ cài đặt thời hạn thích hợp.
<north>
<open>
<Orientation> Không áp dụng Không hỗ trợ <Model>
<outerBoundaryIs> hoàn toàn từ thứ tự <LinearRing>
<outline>
<overlayXY> no
<Pair> Không áp dụng <StyleMap> không được hỗ trợ
<phoneNumber> no
<PhotoOverlay> no
<Placemark>
<Point>
<Polygon>
<PolyStyle>
<range>
<refreshInterval> một phần Chỉ <Link>; không phải trong <Icon>
<refreshMode> Không hỗ trợ tiêu đề HTTP cho chế độ "onExpire". Hãy xem các ghi chú về sự kiện <Update> và <expires> ở trên.
<refreshVisibility> no
<Region>
<ResourceMap> Không áp dụng Không hỗ trợ <Model>
<rightFov> Không áp dụng <PhotoOverlay> không được hỗ trợ
<cuộn> Không áp dụng Không hỗ trợ <Camera> và <Model>
<rotation> no
<rotationXY> no
<Tỷ lệ> Không áp dụng Không hỗ trợ <Model>
<scale> no
<Schema> no
<SchemaData> no
<ScreenOverlay> không thể xoay
<screenXY> no
<shape> Không áp dụng <PhotoOverlay> không được hỗ trợ
<SimpleData> Không áp dụng Không hỗ trợ <SchemaData>
<SimpleField> Không áp dụng Không hỗ trợ <Schema>
<size>
<Snippet>
<south>
<state> Không áp dụng <ListStyle> không được hỗ trợ
<Style>
<StyleMap> no Không hỗ trợ hiệu ứng di chuột qua (đánh dấu)
<styleUrl> Không áp dụng <StyleMap> không được hỗ trợ
<targetHref> một phần được hỗ trợ trong <Update>, không phải trong <Alias>
<tessellate> no
<text> không hỗ trợ thay thế $[geDirections]
<textColor> no
<tileSize> Không áp dụng <PhotoOverlay> không được hỗ trợ
<tilt> no
<TimeSpan> no
<TimeStamp> no
<topFov> Không áp dụng <PhotoOverlay> không được hỗ trợ
<Cập nhật> một phần chỉ thay đổi kiểu, chứ không phải <Tạo> hoặc <Xoá>
<Url> không dùng nữa
<value>
<viewBoundScale> no
<viewFormat> no
<viewRefreshMode> một phần Có hỗ trợ "onStop"
<viewRefreshTime>
<ViewVolume> Không áp dụng <PhotoOverlay> không được hỗ trợ
<visibility> một phần có trên <Thư mục> - dấu vị trí con kế thừa chế độ hiển thị
<w> không dùng nữa
<west>
<when> Không áp dụng Không hỗ trợ <TimeStamp>
<width>
<x> không dùng nữa
<y> không dùng nữa