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> | ใช่ | เลิกใช้งานแล้ว |