我一直在努力创建一个我可以隐藏和显示的地标(如打开和关闭可见性)(按点击)...我正在使用它来制作地标:
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);
});
}
我已经尝试了一切......从这个:
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);
}
}
}
使用此ge.getFeatures().removeChild(child);
任何人都可以指出我正确的方向创建一个功能,让我可以根据需要打开/关闭可见性。
答案 0 :(得分:2)
你的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);
}
}
}
制作
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);
}
答案 1 :(得分:1)
我认为普通ge.getFeatures().removeChild(placemark);
有效。
我使用了这个GooglePlayground,只是将以下代码添加到第8行(在此GooglePlayground Sample中为空):
addSampleButton('Hide Placemark', function(){
ge.getFeatures().removeChild(placemark);
});
点击按钮隐藏地标会在此隐藏像地块一样的地标。您的问题可能在您的代码中的其他位置吗?