0

我有以下功能,它是 Google Earth API 的一部分。它会在地图上生成图像叠加层,并且必须多次调用。我如何调用这个函数并给每个调用一个唯一的 id?我想过这样的事情:

function createScreenOverlay(location, x , y) {
            var screenOverlay = ge.createScreenOverlay('');
            screenOverlay.setIcon(ge.createIcon(''));
            screenOverlay.getIcon().setHref(location); 

            screenOverlay.getOverlayXY().setXUnits(ge.UNITS_FRACTION);
            screenOverlay.getOverlayXY().setYUnits(ge.UNITS_FRACTION);
            screenOverlay.getOverlayXY().setX(.5);
            screenOverlay.getOverlayXY().setY(.5);

              // Set screen position in fractions.
            screenOverlay.getScreenXY().setXUnits(ge.UNITS_PIXELS);
            screenOverlay.getScreenXY().setYUnits(ge.UNITS_PIXELS);
            screenOverlay.getScreenXY().setX(x);  // Random x.
            screenOverlay.getScreenXY().setY(y);  // Random y.

              // Rotate around object's center point.
            screenOverlay.getRotationXY().setXUnits(ge.UNITS_FRACTION);
            screenOverlay.getRotationXY().setYUnits(ge.UNITS_FRACTION);
            screenOverlay.getRotationXY().setX(0.9);
            screenOverlay.getRotationXY().setY(0.5);

              // Rotate by a random number of degrees.
            ge.getFeatures().appendChild(screenOverlay);
        };

在 HTML 中有这个: <p id="campusbutton"><p>

然后在 JavaScript 部分再次调用它: document.getElementById("campusbutton").innerHTML=createScreenOverlay(LOCATION, X, Y);

这确实有效,但是它写了“未定义”<p>假设在哪里......显然<p>是段落标签,这就是打印“未定义”的原因,但是我可以使用任何其他标签吗?<div>由于某种原因不起作用。

谢谢!

4

1 回答 1

1

我不确定你想要实现什么,如果你想campusbutton加载你的覆盖,那么你应该使用一个事件onclick来调用函数并根据需要传递参数。

<p id="campusbutton" onclick="createScreenOverlay(LOCATION, X, Y)"><p>

因为您正在将campusbutton元素的 innerHTML 设置为 function 的结果createScreenOverlay,但该函数不返回任何内容,所以这不起作用。

即使函数确实返回了一些东西,KmlScreenOverlay例如

function createScreenOverlay(location, x , y) {
            var screenOverlay = ge.createScreenOverlay('');
            // rest of your code
            ge.getFeatures().appendChild(screenOverlay);    
            // return the type
            return screenOverlay;
        };

你的 innerHTMLcampusbutton仍然只是这个调用的结果。这将是Object

如果您希望innerHTML 是campusbutton覆盖层的实际Kml,则修改函数以返回KmlScreenOverlay上述内容,然后更改调用以将innerHTML 设置为对象的kml 表示。

document.getElementById("campusbutton").innerHTML=createScreenOverlay(LOCATION, X, Y).getKml();
于 2012-12-10T20:15:15.873 回答