我有一个带有一系列位置(地方政府区域质心)的网络地图,根据LGA是否具有内部功能,可以过滤掉我的地图。它通过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更多的事情?
答案 0 :(得分:1)
解决了这个问题,我想如果有人有兴趣我就给出解决方案。
需要将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>";
}