Javascript 或者解决方案@Eddy:“我从来没有想到我可以在函数之外定义一个变量”,但你已经在用osMap这样做了!是的,当全局变量的数量变大时,创建名称空间非常方便。像var myMapVars={};函数init(){myMapVars.mappoverlay=n
Javascript 或者解决方案@Eddy:“我从来没有想到我可以在函数之外定义一个变量”,但你已经在用osMap这样做了!是的,当全局变量的数量变大时,创建名称空间非常方便。像var myMapVars={};函数init(){myMapVars.mappoverlay=n,javascript,html,Javascript,Html,或者解决方案@Eddy:“我从来没有想到我可以在函数之外定义一个变量”,但你已经在用osMap这样做了!是的,当全局变量的数量变大时,创建名称空间非常方便。像var myMapVars={};函数init(){myMapVars.mappoverlay=new OpenSpace.Layer.mappoverlay(“logo”);}}。在代码中进一步使用myMapVars.mapOverlay。太好了,是的,我想这一定很简单,但我使用的javascript不够,所以我从来没有想到我可以在函数之
或者解决方案@Eddy:“我从来没有想到我可以在函数之外定义一个变量”,但你已经在用
osMap
这样做了!是的,当全局变量的数量变大时,创建名称空间非常方便。像var myMapVars={};函数init(){myMapVars.mappoverlay=new OpenSpace.Layer.mappoverlay(“logo”);}}
。在代码中进一步使用myMapVars.mapOverlay
。太好了,是的,我想这一定很简单,但我使用的javascript不够,所以我从来没有想到我可以在函数之外定义一个变量!谢谢你的解决方案@Eddy:“我从来没有想到我可以在函数之外定义一个变量”,但你已经在用osMap
这样做了!
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Testing OS OpenSpace</title>
<script type="text/javascript"
src="http://openspace.ordnancesurvey.co.uk/osmapapi/openspace.js?key=BA08531D8339984EE0405F0AC86026A9";>
</script>
<script type="text/javascript">
// Define the osMap variable
var osMap;
// This function creates the map and is called by the div in the HTML
function init()
{
// Create new map
osMap = new OpenSpace.Map('map');
// Define image overlay with URL
var mapOverlay = new OpenSpace.Layer.MapOverlay("logo");
mapOverlay.setHTML('<img src="Image1.jpg" style="width: 100%; height: 100%; opacity: 0.8;"/>');
mapOverlay.setPosition(new OpenLayers.LonLat(391500, 805000));
mapOverlay.setSize(new OpenLayers.Size(3700, 4000));
osMap.addLayer(mapOverlay);
// Set map centre in National Grid Eastings and Northings and select zoom level 4
osMap.setCenter(new OpenSpace.MapPoint(393000, 807000), 6);
// Set the mapOverlay as a document property, so that it can be changed.
}
// This function changes the image, or I'd like it to.
function ChangeImage()
{
// Get the choice from the dropdown. this bit works.
var Choice_ = document.getElementById('Choice');
var Choice = Choice_.options[Choice_.selectedIndex].value;
// Edit the mapOverlay, not sure how to achieve this part.
mapOverlay.setHTML('<img src="$Choice" style="width: 100%; height: 100%; opacity: 0.8;"/>');
}
</script>
<style>
html, body {height: 100%;}
#map {width: 700px; height: 500px; border:1px solid black;}
</style>
</head>
<body onload="init()" id='Body'>
<!-- The div below holds the map -->
<div id="map"></div>
<!-- Now some options for which datasets to display. -->
<td><select id='Choice' onchange="ChangeImage()">
<option value="Image1.jpg" selected="selected">1</option>
<option value="Image2.jpg">2</option>
</select>
</td>
</body>
</html>
<script>
var mapOverlay;
function init()
{
//stuff
mapOverlay = new OpenSpace.Layer.MapOverlay("logo");
//more stuff
}
function ChangeImage()
{
//stuff
mapOverlay.setHTML('<img src="$Choice" style="width: 100%; height: 100%; opacity: 0.8;"/>');
}
</script>