Google maps api 3 创建可隐藏的放置标记
我一直在尝试创建一个可以根据需要(单击)隐藏和显示(如打开和关闭可见性)的地点标记。。。我正在使用它来制作placemark: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
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);
}