JSFiddle - React, Tailwind, and code Playground
HTML
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>1.1版-座標格式</title>
<!--【1.0版】主架構參考Retrieve XML file http://www.w3schools.com/xml/tryit.asp?filename=try_dom_xmlhttprequest_xml -->
<!--【1.1版】一整串座標值(字串)要變更就靠String replace() Method http://www.w3schools.com/jsref/jsref_replace.asp -->
</head>
<body>
<p>基於安全理由,目前大部分瀏覽器(如Chrome)不允許網頁程式存取本機檔案,這樣的限制造成此程式無法直接在個人電腦上正常執行(因為要讀取另一個kml檔取得其資料)。但是此程式在jsfiddle、jsbin等平台上也無法正常執行,因為瀏覽器會限制讀取跨網域(cross domain)的xml檔。要測試這個程式,就必須先在自己的電腦上啟動Web Service,然後執行http://localhost/this.html,才能看到正確的執行結果,而自己的電腦上需要快速免安裝就能執行的Web Service,可以試試<a href="https://steachs.com/archives/1797" target="_blank">USBWebserver</a>。</p>
<p>輸入的KML檔可以是Google My Maps繪製的圖資,譬如可以利用這個「<a href="https://drive.google.com/open?id=1WrK7W5deyPURtCL7lyh-AOeGhRk&usp=sharing" target="_blank">中興大學校園RFID門禁大樓</a>」匯出KML檔來實驗。</p>
<form action="javascript:loadXMLDoc();">
請輸入KML檔名: <input type="text" id="xmlfile" value="檔名.kml">
<input type="submit">
</form>
<table id="demo" border="1">
</table>
<script>
function loadXMLDoc() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xmlhttp.open("GET", document.getElementById('xmlfile').value , true);
xmlhttp.send();
}
function myFunction(xml) {
var x, i, xmlDoc, trs;
xmlDoc = xml.responseXML;
trs = "<tr><th>NAME</th><th>COORDINATES</th></tr>";
x = xmlDoc.getElementsByTagName("Placemark")
for (i = 0; i < x.length; i++) {
//【1.1版】/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// 原來的名稱前後加上單引號及逗點
var na = x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
na = "'" + na + "',";
// 原來的一串座標值(字串)要變更就靠String replace() Method http://www.w3schools.com/jsref/jsref_replace.asp
//...