The variable is getting the correct data but is not working in the href parameter. I added a button with the variable to see it in the browser. If I put the hard code value, which is commented, it works.
<?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>
The javascript variable kmlfile
is local to the init
function, so it is always going to be undefined when you attempt to use it in the createNetworkLink
function.
To highlight what I mean take a look at the following, I have removed the other code for clarity...
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...
}
To fix it you could make kmlfile
a global variable so that it is available within the scope of the createNetworkLink
function. To do this simply create the variable outside the init
method,, just like you have with your ge
variable.
Again, take a look at the following with other code removed for clarity.
<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>