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;
        };

の innerHTML は、campusbuttonこの呼び出しの結果のままです。どれでしょうObject

campusbuttonの innerHTML をオーバーレイの実際の Kml にしたい場合はKmlScreenOverlay、上記のように を返すように関数を修正し、呼び出しを変更して、innerHTML をオブジェクトの kml 表現に設定します。

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