我几乎可以肯定已经问过这个问题了,但是出于对我的爱,我只是在任何地方都找不到答案。基本上,我想在正在构建的自定义Google Map上创建多个标记。我已经有一个XML文件,其中包含每个项目的坐标(lat / lng)和标题。我想从XML文件中获取数据,并使用它在地图上创建标记。我已经找到了如何使用KML文件和MySQL / PHP来执行此操作,但是我需要知道如何使用Javascript来执行此操作。
还有一件事:我有一个自己的.xml文件,因此不会像从网页上获取数据那样,因为我相信(根据我今天进行的研究)该代码可能是不同。
如果有人知道此消息是否以前曾发布过,您可以直接把我带到那里吗?我整天都在搜寻,这是我的最后选择。万分感谢!!!
最佳答案
如果您正在寻找一种使用JavaScript解析xml文本的方法,请查看此处:
XML parsing of a variable string in JavaScript
有关从JavaScript加载xml文件的信息,请点击此处:
Load xml from javascript
从自定义xml创建标记非常简单。我添加了一个简短的示例。它显示了如何解析xml文本或加载xml文件,然后根据数据创建标记。
一些自定义xml文本:
var myXmlText = '<?xml version="1.0" encoding="ISO-8859-1"?>' +
'<coords>' +
'<item><position lat="50.1" lng="14.5"/><title>Praha</title></item>' +
'<item><position lat="51.5" lng="0"/><title>London</title></item>' +
'<item><position lat="48.8" lng="2.4"/><title>Paris</title></item>' +
'<item><position lat="52.5" lng="13.4"/><title>Berlin</title></item>' +
'<item><position lat="48.2" lng="16.4"/><title>Wien</title></item>' +
'</coords>';
将xml文本解析为xml DOM对象:
function parseXml(xmlText) {
var xmlDoc;
if (window.DOMParser) {
parser=new DOMParser();
xmlDoc=parser.parseFromString(xmlText,"text/xml");
} else { // Internet Explorer
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.loadXML(xmlText);
}
return xmlDoc;
}
将xml文件加载并解析为xml DOM对象:
function loadXml(xmlUrl) {
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET",xmlUrl,false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
return xmlDoc;
}
根据xml DOM对象中的数据创建标记:
function createMarkers(xmlDoc) {
var items = xmlDoc.getElementsByTagName('item');
for(var i=0; i<items.length; i++) {
var positionEl = items[i].getElementsByTagName('position')[0];
var latlng = new google.maps.LatLng(positionEl.getAttribute('lat'), positionEl.getAttribute('lng'));
var titleNode = items[i].getElementsByTagName('title')[0].childNodes[0];
var marker = new google.maps.Marker({
position: latlng,
map: map,
title: titleNode.nodeValue
});
}
}
要从xml文件创建标记,您需要做的是:
var xmlDoc = loadXml("my_items.xml");
createMarkers(xmlDoc);
要从xml文本创建标记,请使用:
var xmlDoc = parseXml(myXmlText);
createMarkers(xmlDoc);
关于javascript - 使用XML在Google Maps中创建多个标记,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8321152/