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 ซึ่งจะนําเบราว์เซอร์ของผู้ใช้ไปยังคําขอทรัพยากรจากเว็บเซิร์ฟเวอร์โดยตรง
Maps JavaScript API จะแปลงข้อมูล XML ทางภูมิศาสตร์ที่ระบุเป็นการแสดงผล KML ซึ่งจะแสดงบนแผนที่โดยใช้การซ้อนทับไทล์ Maps JavaScript API 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
เครื่องมือสร้าง 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 โดยตรงไม่ได้ แต่ระบบจะแสดงฟีเจอร์โดยทำให้ดูเหมือนการวางซ้อนของ 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" }
ตัวอย่างต่อไปนี้แสดงข้อความองค์ประกอบ <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
Maps JavaScript API มีข้อจำกัดด้านขนาดและความซับซ้อนของไฟล์ KML ที่โหลด ด้านล่างนี้คือสรุปขีดจํากัดปัจจุบัน
หมายเหตุ: ขีดจำกัดเหล่านี้อาจมีการเปลี่ยนแปลงได้ทุกเมื่อ
- ขนาดไฟล์ใหญ่ที่สุดที่โหลดเข้ามาได้ (KML ดิบ, GeoRSS ดิบหรือ KMZ ที่มีการบีดอัด)
- 3MB
- ขนาดไฟล์ KML สูงสุดที่ไม่มีการบีบอัด
- 10MB
- ขนาดไฟล์รูปภาพสูงสุดที่ไม่บีบอัดในไฟล์ KMZ
- 500KB ต่อไฟล์
- จำนวนลิงก์เครือข่ายสูงสุด
- 10
- จำนวนสูงสุดของจุดสนใจทั้งหมดที่มีอยู่ในทั้งเอกสาร
- 1,000
- จำนวนเลเยอร์ KML
- จำนวนเลเยอร์ KML ที่แสดงใน Google Map รายการเดียวมีขีดจำกัด หากเกินขีดจํากัดนี้ เลเยอร์ทั้งหมดจะไม่ปรากฏบนแผนที่ และระบบจะรายงานข้อผิดพลาดในคอนโซล JavaScript ของเบราว์เซอร์ ขีดจํากัดจะอิงตามจํานวนชั้น
KmlLayerที่สร้างขึ้นและความยาวรวมของ URL ทั้งหมดที่ใช้สร้างเลเยอร์เหล่านั้นKmlLayerใหม่แต่ละรายการที่คุณสร้างจะใช้พื้นที่บางส่วนของขีดจํากัดสําหรับเลเยอร์ และอีกส่วนหนึ่งของขีดจํากัดจะขึ้นอยู่กับความยาวของ URL ที่โหลดไฟล์ KML ดังนั้น จำนวนเลเยอร์ที่คุณเพิ่มได้จะแตกต่างกันไปตามแอปพลิเคชัน โดยเฉลี่ยแล้ว คุณควรโหลดเลเยอร์ได้ 10-20 เลเยอร์โดยไม่ถึงขีดจำกัด หากยังใช้ URL เกินขีดจํากัดอยู่ ให้ใช้ตัวย่อ URL เพื่อย่อ URL ของ KML หรือสร้างไฟล์ KML ไฟล์เดียวที่มี NetworkLinks ไปยัง URL ของ KML แต่ละรายการ
ข้อควรพิจารณาด้านประสิทธิภาพและการแคช
เซิร์ฟเวอร์ของ Google จะแคชไฟล์ KML ไว้ชั่วคราวเพื่อลดภาระงานในเซิร์ฟเวอร์ของคุณ วิธีนี้ยังช่วยปรับปรุงประสิทธิภาพให้กับผู้ใช้ด้วยการแสดงกลุ่มที่เหมาะสมของไฟล์ KML โดยใช้พื้นที่อย่างมีประสิทธิภาพ เมื่อผู้ใช้คลิก เลื่อน และซูมแผนที่
เราขอแนะนําให้ทําดังนี้เพื่อให้ได้ประสิทธิภาพที่ดีที่สุด
- ใช้แท็ก
<expires>ที่เหมาะสมใน KML
KmlLayerจะไม่ใช้ส่วนหัว HTTP เมื่อตัดสินใจวิธีแคชไฟล์ KML - อย่าสร้างไฟล์แบบไดนามิกเมื่อได้รับคําขอ
ให้สร้างไฟล์ไว้ก่อนถึงเวลาใช้งาน แล้วแสดงไฟล์แบบคงที่ หากเซิร์ฟเวอร์ใช้เวลานานในการส่งไฟล์ KMLKmlLayerอาจไม่แสดง - อย่าพยายามข้ามแคช เว้นแต่คุณจะแน่ใจว่าไฟล์ได้รับการอัปเดตแล้ว
การข้ามแคชเสมอ (เช่น โดยการต่อท้ายตัวเลขสุ่มหรือเวลาตามนาฬิกาของผู้ใช้เป็นพารามิเตอร์การค้นหา) อาจทําให้เซิร์ฟเวอร์ของคุณทำงานหนักเกินไปได้ง่ายๆ หากเว็บไซต์ของคุณได้รับความนิยมอย่างฉับพลันและคุณแสดงไฟล์ KML ขนาดใหญ่
นอกจากนี้ยังอาจทําให้แคชแสดงข้อมูลที่ล้าสมัยแก่ผู้ใช้ได้ หากนาฬิกาของผู้ใช้ไม่ถูกต้อง และไม่ได้ตั้งค่าแท็ก<expires>อย่างถูกต้อง
ให้เผยแพร่ไฟล์แบบคงที่ที่อัปเดตแล้วซึ่งมีหมายเลขการแก้ไขใหม่แยกต่างหากแทน ใช้โค้ดฝั่งเซิร์ฟเวอร์เพื่ออัปเดต URL ที่ส่งไปยังKmlLayerเป็นเวอร์ชันปัจจุบันแบบไดนามิก - จำกัดการเปลี่ยนแปลงไฟล์ KML เป็น 1 ครั้งต่อนาที
หากไฟล์ทั้งหมดมีขนาดใหญ่เกิน 1 MB (ไม่บีบอัด) ขีดจำกัดจะเปลี่ยนเป็น 1 ครั้งต่อ 5 นาที - เมื่อใช้เซิร์ฟเวอร์ข้อมูลเชิงพื้นที่ ให้หลีกเลี่ยงการใช้พารามิเตอร์การค้นหาเพื่อจำกัดวิวพอร์ตของเลเยอร์
แต่คุณสามารถจํากัดวิวพอร์ตแผนที่ด้วยเหตุการณ์bounds_changedแทนได้ ระบบจะส่งเฉพาะฟีเจอร์ที่แสดงโดยอัตโนมัติให้กับผู้ใช้
หากมีข้อมูลจำนวนมากในเซิร์ฟเวอร์ข้อมูลเชิงพื้นที่ ให้ลองใช้เลเยอร์ข้อมูลแทน - เมื่อใช้เซิร์ฟเวอร์ข้อมูลเชิงพื้นที่ ให้ใช้
KmlLayerหลายรายการสำหรับแต่ละกลุ่มของฟีเจอร์ที่คุณต้องการอนุญาตให้ผู้ใช้สลับแทนที่จะใช้KmlLayerรายการเดียวที่มีพารามิเตอร์การค้นหาที่แตกต่างกัน - ใช้ไฟล์ KMZ ที่บีบอัดเพื่อลดขนาดไฟล์
- หากคุณใช้ Google Cloud Storage หรือโซลูชันพื้นที่เก็บข้อมูลระบบคลาวด์อื่น ให้หลีกเลี่ยงการใช้ฟีเจอร์ต่างๆ เช่น URL ที่มีลายเซ็นหรือโทเค็นชั่วคราวเพื่อบังคับใช้การควบคุมการเข้าถึง ซึ่งอาจทำให้แคชไม่ได้โดยไม่ตั้งใจ
- ลดความแม่นยำของจุดทั้งหมดเป็นความแม่นยำที่เหมาะสม
- ผสานและลดความซับซ้อนของเรขาคณิตขององค์ประกอบที่คล้ายกัน เช่น รูปหลายเหลี่ยมและรูปหลายเส้น
- นำองค์ประกอบหรือทรัพยากรรูปภาพที่ไม่ได้ใช้ออก
- นำองค์ประกอบที่ไม่รองรับออก
หากต้องการเข้าถึงข้อมูลส่วนตัว ป้องกันแคช หรือส่งวิวพอร์ตของเบราว์เซอร์ไปยังเซิร์ฟเวอร์ข้อมูลเชิงพื้นที่เป็นพารามิเตอร์การค้นหา เราขอแนะนำให้ใช้เลเยอร์ข้อมูลแทน KmlLayer ซึ่งจะนําเบราว์เซอร์ของผู้ใช้ไปยังคําขอทรัพยากรจากเว็บเซิร์ฟเวอร์โดยตรง
องค์ประกอบ KML ที่รองรับ
Maps JavaScript API รองรับองค์ประกอบ KML ต่อไปนี้ ปกติแล้ว โปรแกรมแยกวิเคราะห์ KML จะละเลยแท็กที่โปรแกรมไม่เข้าใจโดยไม่มีผลอะไร
- หมุด
- ไอคอน
- โฟลเดอร์
- HTML ที่สื่อความหมาย - การเปลี่ยนเอนทิตีผ่าน <BalloonStyle> และ <text>
- KMZ (KML ที่มีการบีบอัด รวมถึงรูปภาพที่แนบมา)
- โพลีไลน์และรูปหลายเหลี่ยม
- ลักษณะของโพลีไลน์และรูปหลายเหลี่ยม รวมถึง สี สีเติม และความโปร่งแสง
- ลิงก์ของเครือข่ายเพื่อนำเข้าข้อมูลแบบไดนามิก
- Ground Overlay และ Screen Overlay
ตารางต่อไปนี้แสดงรายละเอียดทั้งหมดขององค์ประกอบ 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 Maps อาจแคชข้อมูลที่ดึงมาจากอินเทอร์เน็ตเป็นระยะเวลาที่ไม่ระบุ คุณสามารถบังคับให้ดึงข้อมูลจากอินเทอร์เน็ตอีกครั้งได้โดยการเปลี่ยนชื่อเอกสารและดึงข้อมูลภายใต้ 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 on <Folder> - หมุดย่อยจะรับค่าการแสดงผลจากหมุดหลัก |
| <w> | ใช่ | เลิกใช้งานแล้ว |
| <west> | ใช่ | |
| <when> | ไม่มี | ระบบไม่รองรับ <TimeStamp> |
| <width> | ใช่ | |
| <x> | ใช่ | เลิกใช้งานแล้ว |
| <y> | ใช่ | เลิกใช้งานแล้ว |