Javascript XML生成的Google地图上的复选框过滤器
我很难为下面的代码设置复选框过滤器,这是因为整个过程非常庞大而减少的。除了这些复选框过滤器外,所有功能都正常工作。这些标记都是从php生成的xml文件中提取出来的,就像谷歌的例子一样 我想这是因为标记文件是一个对象HTMLCollection,我得到了标记[I]。setVisible不是一个函数,我尝试了很多东西,但我不知道它是什么。我真的很感谢你帮我做这件事,这是我的最后一步 示例XML数据Javascript XML生成的Google地图上的复选框过滤器,javascript,xml,google-maps,google-maps-api-3,checkbox,Javascript,Xml,Google Maps,Google Maps Api 3,Checkbox,我很难为下面的代码设置复选框过滤器,这是因为整个过程非常庞大而减少的。除了这些复选框过滤器外,所有功能都正常工作。这些标记都是从php生成的xml文件中提取出来的,就像谷歌的例子一样 我想这是因为标记文件是一个对象HTMLCollection,我得到了标记[I]。setVisible不是一个函数,我尝试了很多东西,但我不知道它是什么。我真的很感谢你帮我做这件事,这是我的最后一步 示例XML数据 <marker name="Some Shop" id="2" type="shops" des
<marker name="Some Shop" id="2" type="shops" description="Great shop" street_number="350" street_name="Main Road" suburb="Lovely ville" lat="-23.9544011" lng="156.1895873" from="2014-01-01 01:00:00" to="2015-10-01 01:00:00"/>
Javascript
downloadUrl("xml_generator.php", function (data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var type = markers[i].getAttribute("type");
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon
});
bindInfoBox(marker, map, ib, myOptions);
}
$(document).ready(function(){
// == shows all markers of a particular category, and ensures the checkbox is checked ==
function show(category) {
window.alert("Show " + category + markers);
for (var i=0; i<markers.length; i++) {
if (markers[i].getAttribute("type") == category) {
markers[i].setVisible(true);
}
}
}
// == hides all markers of a particular category, and ensures the checkbox is cleared ==
function hide(category) {
window.alert("Hide " + category);
for (var i=0; i<markers.length; i++) {
if (markers[i].getAttribute("type") == category) {
markers[i].setVisible(true);
}
}
}
$(".toggle").click(function(){
var cat = $(this).attr("value");
// If checked
if ($(this).is(":checked"))
{
show(cat);
} else
{
hide(cat);
}
});
});
});
下载URL(“xml_generator.php”,函数(数据){
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i标记[i]
是一个HTMLElement对象(或XMLElement)。它没有setVisible方法
您需要一个不同的google.maps.Marker对象“gmarkers”数组,如下所示:
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var type = markers[i].getAttribute("type");
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon
});
bindInfoBox(marker, map, ib, myOptions);
gmarkers.push(marker); //*****
}
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i
我试过了,并在声明map的代码开头声明了gmarkers,但没有成功。还更新了函数。获取错误时,无法读取var markers下未定义的未声明gmarkers的属性“push”,在for语句之前,作为var gmarkers=[];但现在获取错误时无法读取未定义的属性“setCenter”!在开始时取消了gmarkers,并将标记[i].setVisible(true);更改为gmarkers[i].setVisible(true);所有操作都正常。相关问题相关问题:
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var type = markers[i].getAttribute("type");
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon
});
bindInfoBox(marker, map, ib, myOptions);
gmarkers.push(marker); //*****
}