我正在尝试使用XML文件在Google地图上显示一些标记。
我似乎能够让标记显示OK,但我想知道如何过滤它们。
有问题的XML如下所示;
<?xml version="1.0" encoding="utf-16"?>
<OutageData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<TimeStamp>2014-01-24T11:33:41.665165+00:00</TimeStamp>
<Outages>
<Outage>
<Region>South West</Region>
<IncidentID>INCD-30315-k</IncidentID>
<ConfirmedOff>4</ConfirmedOff>
<PredictedOff>0</PredictedOff>
<Restored>0</Restored>
<Status>In Progress</Status>
<Planned>false</Planned>
<StartTime>2014-01-24T09:30:00</StartTime>
<ETR xsi:nil="true" />
<Voltage>LV</Voltage>
<PostCodes>
<string>TR20 8UJ</string>
</PostCodes>
<Sensitive>0</Sensitive>
<Location lat="50.13206" lng="-5.5528" />
</Outage>
<Outage>
<Region>South West</Region>
<IncidentID>INCD-30342-k</IncidentID>
<ConfirmedOff>7</ConfirmedOff>
<PredictedOff>0</PredictedOff>
<Restored>0</Restored>
<Status>In Progress</Status>
<Planned>true</Planned>
<StartTime>2014-01-24T09:00:00</StartTime>
<ETR xsi:nil="true" />
<Voltage>LV</Voltage>
<PostCodes>
<string>TR4 8AL</string>
<string>TR4 8AN</string>
<string>TR4 8AP</string>
<string>TR4 8AW</string>
<string>TR4 8FE</string>
</PostCodes>
<Sensitive>4</Sensitive>
<Location lat="50.28881" lng="-5.236961" />
</Outage>
</Outages>
</OutageData>
但是我只想显示Planned值为'false'的标记。 因此,根据上面的数据,地图上只能显示一个标记。
我目前使用的代码是jQuery代码;
jQuery.get("/dataNew.xml", {}, function (data) {
jQuery(data).find("Outage").each(function () {
$(this).find("Location").each(function () {
var marker = jQuery(this);
var latlngNew = new google.maps.LatLng(parseFloat(marker.attr("lat")),
parseFloat(marker.attr("lng")));
var marker = new google.maps.Marker({ position: latlngNew, map: map });
});
});
});
如果有人能够指出我正确的方向,我将非常感激。
亲切的问候,
克里斯
答案 0 :(得分:1)
如果您每次都获得计划节点的值,则可以简单地停止绘制您不想要的点。类似的东西:(未经测试)
jQuery.get("/dataNew.xml", {}, function (data) {
jQuery(data).find("Outage").each(function () {
if($(this).find("Planned").text() == "true")
{
$(this).find("Location").each(function () {
var marker = jQuery(this);
var latlngNew = new google.maps.LatLng(parseFloat(marker.attr("lat")),
parseFloat(marker.attr("lng")));
var marker = new google.maps.Marker({ position: latlngNew, map: map });
});
}
});
});