Google maps api 3 创建可隐藏的放置标记

Google maps api 3 创建可隐藏的放置标记,google-maps-api-3,google-earth-plugin,Google Maps Api 3,Google Earth Plugin,我一直在尝试创建一个可以根据需要(单击)隐藏和显示(如打开和关闭可见性)的地点标记。。。我正在使用它来制作placemark: function placemark(lat, long, name, url, iconsrc){ var placemark = ge.createPlacemark(name); ge.getFeatures().appendChild(placemark); placemark.setName(name); // Create

我一直在尝试创建一个可以根据需要(单击)隐藏和显示(如打开和关闭可见性)的地点标记。。。我正在使用它来制作placemark:

function placemark(lat, long, name, url, iconsrc){
    var placemark = ge.createPlacemark(name);
    ge.getFeatures().appendChild(placemark);
    placemark.setName(name);

    // Create style map for placemark
    var icon = ge.createIcon('');
    if(iconsrc == "0")
        icon.setHref('http://maps.google.com/mapfiles/kml/paddle/red-circle.png');
    else{
        icon.setHref(iconsrc);
    }
    var style = ge.createStyle('');
    style.getIconStyle().setIcon(icon);
    if(iconsrc != "0")
        style.getIconStyle().setScale(2.5);

    placemark.setStyleSelector(style);

    // Create point
    var point = ge.createPoint('');
    point.setLatitude(lat);
    point.setLongitude(long);
    //point.setAltitudeMode(1500);
    placemark.setGeometry(point);
    google.earth.addEventListener(placemark, 'click', function(event) {
    // Prevent the default balloon from popping up.
        event.preventDefault();

        var balloon = ge.createHtmlStringBalloon('');
        balloon.setFeature(placemark); // optional
        balloon.setContentString(
            '<iframe src="'+ url +'" frameborder="0"></iframe>');

        ge.setBalloon(balloon);
    });              

}
函数placemark(lat、long、name、url、icosrc){
var placemark=ge.createPlacemark(名称);
ge.getFeatures().appendChild(placemark);
placemark.setName(名称);
//为placemark创建样式图
var icon=ge.createIcon(“”);
如果(Iconsc==“0”)
icon.setHref('http://maps.google.com/mapfiles/kml/paddle/red-circle.png');
否则{
icon.setHref(iconsrc);
}
var style=ge.createStyle(“”);
style.getIconStyle().setIcon(图标);
如果(Iconsc!=“0”)
style.getIconStyle().setScale(2.5);
placemark.setStyleSelector(样式);
//创建点
var point=ge.createPoint(“”);
设置纬度(lat);
设置经度(长);
//点。setAltitudeMode(1500);
placemark.setGeometry(点);
google.earth.addEventListener(placemark,'click',函数(事件){
//防止弹出默认引出序号。
event.preventDefault();
var balloon=ge.createHtmlStringBalloon(“”);
balloon.setFeature(placemark);//可选
balloon.setContentString(
'');
热气球;
});              
}
我什么都试过了。。。由此:

function hidePlacemark(name){
    var children = ge.getFeatures().getChildNodes();
    for(var i = 0; i < children.getLength(); i++) { 
        var child = children.item(i);
        if(child.getType() == 'KmlPlacemark') {
            if(child.getId()== name)
            child.setVisibility(false);
        }
    }
}
函数hidePlacemark(名称){
var children=ge.getFeatures().getChildNodes();
对于(var i=0;i
要使用此
ge.getFeatures().removeChild(child)


有人能告诉我创建一个函数的正确方向吗?该函数允许我按需打开/关闭可见性。

我认为普通的
ge.getFeatures().removeChild(placemark)工作

我玩了这个,只是在第8行添加了以下代码(在这里是空的):


单击“隐藏位置标记”按钮可在此处像符咒一样隐藏位置标记。您的问题是否可能存在于代码的其他地方?

您的hidePlacemark函数在最后的IF语句中缺少一些{}

if(child.getId()== name)
你有

function hidePlacemark(name){
    var children = ge.getFeatures().getChildNodes();
    for(var i = 0; i < children.getLength(); i++) { 
        var child = children.item(i);
        if(child.getType() == 'KmlPlacemark') {
            if(child.getId()== name)
            child.setVisibility(false);
        }
    }
}

问题是,一旦删除了child,就无法再次创建相同的placemark,因为uniqueID不能使用两次…=\这就是我所说的隐藏。。。这样就可以根据需要“关闭”和“打开”。老实说,我不知道为什么我自己没有想到要这么做。。我在这段代码中被这个该死的错误困扰了这么长时间,我甚至没有想到要用不同的方法来处理它。。。你就是男人(如果你是男人,也可以是女人!)+1这是正确答案…值得注意的是kml可见性是分层的,因此您可以通过简单地设置父级的可见性开/关来轻松切换项目集。
function hidePlacemark(name){
    var children = ge.getFeatures().getChildNodes();
    for(var i = 0; i < children.getLength(); i++) { 
        var child = children.item(i);
        if(child.getType() == 'KmlPlacemark') {
            if(child.getId()== name)
            child.setVisibility(false);
        }
    }
}
function hidePlacemark(name){
    var children = ge.getFeatures().getChildNodes();
    for(var i = 0; i < children.getLength(); i++) { 
        var child = children.item(i);
        if(child.getType() == 'KmlPlacemark') {
            if(child.getId()== name) {
                child.setVisibility(false);
            }
        }
    }
}
function hidePlacemark(name) {
    var placemark = ge.getElementById(name);
    placemark.setVisibility(false);
}