javascript - XML 到 HTML 表中以用于传单 map 标记弹出窗口

标签 javascript xml web mapping leaflet

我有一个包含一系列位置(地方政府区域质心)的网络 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/

相关文章:

javascript - ul li 子菜单使用 jquery 显示 onclick

java - Android 登录 Facebook 崩溃

java - 在Java中解析各种自定义XML文档的最佳方法

java - 如何让就业指导系统智能化

javascript - 拥有不同模型的多个 body

javascript - 将元素 ID 添加到 js if 语句

javascript - through2 和 Node.js 中的原生 Transform 流有什么区别?

java - 控制 Web 服务中的命名空间前缀?

c# - 如何在不使用第三方库的情况下从 HTML 中提取文本?

c# - 获取 Twitch VOD 源视频 URL