gpt4 book ai didi

javascript - Google Earth API link.setHref 在使用变量时不起作用

转载 作者:行者123 更新时间:2023-11-30 06:35:14 26 4
gpt4 key购买 nike

变量正在获取正确的数据,但在 href 参数中不起作用。我添加了一个带有变量的按钮以在浏览器中查看它。如果我输入带有注释的硬代码值,它就会起作用。

<?php
@session_start();
$idcoord = $_GET['search_fd0'];
$kmlpath = "http://nonprasa.t15.org/kml/PR" . $idcoord . "/doc.kml";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Earth API Sample</title>
<script src="http://www.google.com/jsapi?key=ABQIAAAAuPsJpk3MBtDpJ4G8cqBnjRRaGTYH6UMl8mADNa0YKuWNNa8VNxQCzVBXTx2DYyXGsTOxpWhvIG7Djw" type="text/javascript"></script>
<script type="text/javascript">
function addSampleButton(caption, clickHandler) {
var btn = document.createElement('input');
btn.type = 'button';
btn.value = caption;

if (btn.attachEvent)
btn.attachEvent('onclick', clickHandler);
else
btn.addEventListener('click', clickHandler, false);

// add the button to the Sample UI
document.getElementById('sample-ui').appendChild(btn);

}

function addSampleUIHtml(html) {
document.getElementById('sample-ui').innerHTML += html;
}
</script>
<script type="text/javascript">
var ge;

google.load("earth", "1");

function init() {
// var kmlfile = '\"<?php echo $kmlpath; ?>\"';
var kmlfile = '<?php echo $kmlpath;?>';
google.earth.createInstance('map3d', initCallback, failureCallback);


addSampleButton(kmlfile, buttonClick);
}

function initCallback(instance) {
ge = instance;
ge.getWindow().setVisibility(true);

// add a navigation control
ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);

// add some layers
ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true);
ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true);


createNetworkLink();

document.getElementById('installed-plugin-version').innerHTML =
ge.getPluginVersion().toString();

}

function failureCallback(errorCode) {
}

function createNetworkLink() {
var networkLink = ge.createNetworkLink("");
networkLink.setDescription("NetworkLink open to fetched content");
networkLink.setName("Open NetworkLink");
networkLink.setFlyToView(true);

// create a Link object
var link = ge.createLink("");
//link.setHref("http://nonprasa.t15.org/kml/PR0302013/doc.kml);

link.setHref (kmlfile);


// attach the Link to the NetworkLink
networkLink.setLink(link);

// add the NetworkLink feature to Earth
ge.getFeatures().appendChild(networkLink);

// look at the placemark we created
var la = ge.createLookAt('');
la.set(18, -67,
0, // altitude
ge.ALTITUDE_RELATIVE_TO_GROUND,
0, // heading
0, // straight-down tilt
1500 // range (inverse of zoom)
);
ge.getView().setAbstractView(la);

}

function buttonClick() {
// Get the current view.
var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);

// Zoom out to x times the current range.
lookAt.setRange(lookAt.getRange() * 5.0);

// Update the view in Google Earth.
ge.getView().setAbstractView(lookAt);
}

</script>
</head>
<body onload="init()" style="font-family: arial, sans-serif; font-size: 8px; border: 0;">
<div id="sample-ui"></div>
<div id="map3d" style="width: 1200px; height: 800px;"></div>
<br>
<div>Installed Plugin Version: <span id="installed-plugin-version" style="font-weight: bold;">Loading...</span></div>
</body>

最佳答案

javascript 变量 kmlfileinit 的本地函数,因此当您尝试在 createNetworkLink 中使用它时,它总是未定义的功能。

为了突出我的意思,请看下面的内容,为了清楚起见,我删除了其他代码...

function init() {
var kmlfile = '<?php echo $kmlpath;?>'; // kmlfile defined here
}

function createNetworkLink() {
link.setHref(kmlfile); // kmlfile is undefined here
alert(kmlfile); // this would have told you as much...
}

要修复它,您可以制作 kmlfile一个全局变量,以便它在 createNetworkLink 的范围内可用功能。为此,只需在 init 之外创建变量方法,就像你的 ge 一样多变的。

再次,为了清晰起见,请查看以下删除了其他代码的内容。

<script type="text/javascript">
var ge;
var kmlfile; // kmlfile defined here

function init() {
kmlfile = '<?php echo $kmlpath;?>'; // set the variable
}

function createNetworkLink() {
link.setHref(kmlfile); // kmlfile is now available here
}
</script>

关于javascript - Google Earth API link.setHref 在使用变量时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14970866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com