我有一个包含一系列位置(地方政府区域质心)的网络 map ,根据 LGA 内部是否有要素,这些位置会被过滤掉我的 map 。它通过存储与这些位置相关的功能的 xml 文档来实现这一点。
<LGA name="ThisLGA">
<feature>
<name>Feature 1</name>
<status>lolcat</status>
</feature>
<feature>
<name>Feature 2</name>
<status>lolcat</status>
</feature>
</LGA>
<LGA name="ThisOtherLGA">
<feature>
<name>Feature 1</name>
<status>lolcat</status>
</feature>
<feature>
<name>Feature 1</name>
<status>lolcat</status>
</feature>
</LGA>
我现在想做的是让每个 LGA 标记的弹出窗口包含一个表,其中包含每个功能名称和状态(最终可能还有其他属性)。
有人对如何实现这一点有任何建议吗?我看到有些人使用 underscore.js 并创建 HTML 模板。但是我不知道需要多少行,因此必须动态完成。
php 比 javascript 更适合做一些事情吗?
最佳答案
解决了,如果有人感兴趣,我想我会给出解决方案。
需要将 HTML 字符串放入 .bindpopup() 方法中。
function popupTable(LGA){
//Load in xml document
var xml = loadXML("spatialLayers/nctProperties.xml");
//Start of HTML string for popup
var htmlString = "<div><table>";
//Create list of all LGA nodes
var xmls=xml.getElementsByTagName("LGA");
for (i=0;i<xmls.length;i++){
//Get a specific LGA and create HTML string of
if (xmls[i].getAttribute("type")===LGA){
var iteratorLength = xmls[i].getElementsByTagName("name").length;
//Loop through all child nodes of the LGA
for (j=0;j<iteratorLength;j++){
var status = xmls[i].getElementsByTagName("status")[j].childNodes[0].nodeValue;
//Customise icon in table based upon property status
if (status === "Covenant Registered"){
var addToString = "<tr><td>"+ xmls[i].getElementsByTagName("name")[j].childNodes[0].nodeValue+"</td><td><image src=images/mapMarkers/marker1_green_mini.png></td></tr>";
}else if (status === "Yellow Box"){
var addToString = "<tr><td>"+ xmls[i].getElementsByTagName("name")[j].childNodes[0].nodeValue+"</td><td><image src=images/mapMarkers/marker1_yellowbox_mini.png></td></tr>";
}else if (status === "For Sale"){
var addToString = "<tr><td>"+ xmls[i].getElementsByTagName("name")[j].childNodes[0].nodeValue+"</td><td><image src=images/mapMarkers/marker1_brown_mini.png></td></tr>";
}else{
var addToString = "<tr><td>"+ xmls[i].getElementsByTagName("name")[j].childNodes[0].nodeValue+"</td><td>";
}
//console.log(addToString);
htmlString = htmlString + addToString;
};
};
};
return htmlString +"</table></div>";
}
关于javascript - XML 到 HTML 表中以用于传单 map 标记弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24531425/