Displaying a lon/lat marker on a map

How do we display a longitude/latitude point on a map as above? First, we need to tell the browser to pull in the OS OpenSpace JavaScript API:
<script type="text/javascript" src="http://openspace.ordnancesurvey.co.uk/osmapapi/openspace.js?key=insert_your_api_key_here"></script>
Next, in the body, we need to tell JavaScript to run our initialisation function on loading the page:
<body onload="init();">
Next we need to add a map div element; this is the HTML element that will contain the map:
<div id="map" style="width: 500px; height: 300px; border: 1px solid black;"></div>
<script type="text/javascript">var osMap;function init(){osMap = new OpenSpace.Map('map');osMap.setCenter(new OpenSpace.MapPoint(438760, 114760), 7);var markers = new OpenLayers.Layer.Markers("Markers");osMap.addLayer(markers);var lonlat = new OpenLayers.LonLat(-1.434006, 50.9335005);var gridProjection = new OpenSpace.GridProjection();var pos = gridProjection.getMapPointFromLonLat(lonlat);var marker = new OpenLayers.Marker(pos);markers.addMarker(marker);}</script>
Let's break this up:
We start a script tag to contain our code:
<script type="text/javascript">
Then we create a map object variable, osMap:
var osMap;
Now we define our init function:
function init(){
Create a new OS OpenSpace map object and pass it our 'map' element id. This is the HTML div that will hold the map.
osMap = new OpenSpace.Map('map');
We now set the centre of the map above Ordnance Survey head office:
osMap.setCenter(new OpenSpace.MapPoint(438760, 114760), 7);
We create a 'markers' layer and add it to the map:
var markers = new OpenLayers.Layer.Markers("Markers");osMap.addLayer(markers);
Next we create a longitude/latitude position object holding the location of Ordnance Survey head office. An OS OpenSpace.GridProjection object is created to handle the transformation from longitude/latitude to British National Grid, and the transformed position is calculated:
var lonlat = new OpenLayers.LonLat(-1.434006, 50.9335005);var gridProjection = new OpenSpace.GridProjection();var pos = gridProjection.getMapPointFromLonLat(lonlat);
A marker is created at the above location:
var marker = new OpenLayers.Marker(pos);
Finally, we add the marker to the markers layer, and close both the function and the script tag.
markers.addMarker(marker);}</script>
The full example can be found below.
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Open Space Tutorial - Example 2</title><script type="text/javascript" src="http://openspace.ordnancesurvey.co.uk/osmapapi/openspace.js?key=insert_your_api_key_here"></script></head><body onload="init()"><script type="text/javascript">var osMap;function init(){osMap = new OpenSpace.Map('map');osMap.setCenter(new OpenSpace.MapPoint(438760, 114760), 7);var markers = new OpenLayers.Layer.Markers("Markers");osMap.addLayer(markers);var lonlat = new OpenLayers.LonLat(-1.434006, 50.9335005);var gridProjection = new OpenSpace.GridProjection();var pos = gridProjection.getMapPointFromLonLat(lonlat);var marker = new OpenLayers.Marker(pos);markers.addMarker(marker);}</script><h1>Displaying a point on a map</h1><div id="map" style="width: 500px; height: 300px; border: 1px solid black;"></div></body></html>
![OS OpenSpace [logo]](/images/openspace-logo.jpg)