我正在为Google Earth开发此解决方案。我有一个标题,其中包含使用CSS创建的按钮,单击该按钮会触发加载KML。我遇到的问题是,如果用户再次单击该按钮,则会再次加载相同的KML。我需要防止这种情况发生。我一直在考虑点击它会使按钮变灰,直到选择了删除KML功能,或者如果用户再次单击该按钮,它将删除它。我需要它是按钮而不是复选标记。
function createNetworkLink(newlink) {
var networkLink = ge.createNetworkLink("");
var link = ge.createLink("");
link.setHref(newlink);
networkLink.setLink(link);
ge.getFeatures().appendChild(networkLink);
function LoadKML() {
var newlink = "http://www.something.com/test.kml";
createNetworkLink(newlink);
<div id='topmenu'>
<ul style="width: auto">
<li class='active'><a href="www.something.com"><span>Home</span></a></li>
<li><a title="KML 1" href='#'onClick=LoadKML();><span>KML 1</span></a></li>
<li class='last' style="width: auto"><a href='#'onClick=killKML();><span>Remove KMLs</spam></a></li>
我的功能是在没有问题的情况下杀死KML。
function killKML(source) {
var features = ge.features().getChildNodes();
for (var i=0; i < features.getLength(); i++)
{
var feature = features.item(i);
if (! source) {
ge.getFeatures().removeChild(feature);
}
}
}
答案 0 :(得分:1)
代码中没有使用jQuery ......所以我建议使用简单的基于标志的解决方案
var kmlLoaded = false;
function LoadKML() {
if (kmlLoaded) {
return
}
var newlink = "http://www.something.com/test.kml";
createNetworkLink(newlink);
kmlLoaded=true;
}
function killKML(source) {
kmlLoaded=false;
var features = ge.features().getChildNodes();
for (var i = 0; i < features.getLength(); i++) {
var feature = features.item(i);
if (!source) {
ge.getFeatures().removeChild(feature);
}
}
}