Add working code for Markers -- marker layer and marker object. Also add markers.html to demo use of markers functionality.

git-svn-id: http://svn.openlayers.org/trunk/openlayers@107 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
crschmidt
2006-05-17 17:21:57 +00:00
parent efbd12fc29
commit 4d0f98f4fe
3 changed files with 64 additions and 9 deletions

View File

@@ -3,25 +3,35 @@ OpenLayers.Layer.Marker.prototype =
Object.extend( new OpenLayers.Layer(), {
// markers: store internal marker list
markers:null,
markers: [],
initialize: function(name) {
OpenLayers.Layer.prototype.initialize.apply(this, arguments);
},
// Implement this. It may not need to do anything usually.
moveTo:function(bounds,zoomChanged) {
moveTo: function(bounds,zoomChanged) {
if (zoomChanged) {
this.div.innerHTML="";
for(i=0; i < this.markers.length; i++) {
this.drawMarker(this.markers[i]);
}
}
},
addMarker:function(marker) {
addMarker: function(marker) {
this.markers.append(marker);
if (this.map && this.map.getExtent()) {
this.drawMarker(marker);
}
},
drawMarker: function(marker) {
var resolution = this.map.getResolution();
var extent = this.map.getExtent();
var pixel = new OpenLayers.Pixel(
resolution * (this.lonlat.lon - extent.minlon),
resolution * (extent.maxlat - this.lonlat.lat)
1/resolution * (marker.lonlat.lon - extent.minlon),
1/resolution * (extent.maxlat - marker.lonlat.lat)
);
var m = marker.generateMarker(pixel);
this.div.appendChild(m);
},
}
});

View File

@@ -28,8 +28,15 @@ OpenLayers.Marker.prototype = {
this.lonlat = lonlat;
},
generateMarker: function(pixel) {
var markerObject;
// Create a div here, and set the location to the pixel above
// Create a div here, and set the location to the pixel above modified
// by the icon size.
var markerObject = OpenLayers.Util.createImage(
this.icon.url,
this.icon.size,
new OpenLayers.Pixel(
pixel.x-(this.icon.size.w/2),
pixel.y-this.icon.size.h)
);
return markerObject;
}
}

38
markers.html Normal file
View File

@@ -0,0 +1,38 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="imagetoolbar" content="no"> <!--ie image gizmo OFF!-->
<style type="text/css">
#map {
width: 800px;
height: 475px;
border: 1px solid black;
}
</style>
<script src="lib/OpenLayers.js"></script>
<script type="text/javascript">
<!--
var map, layer;
function init(){
map = new OpenLayers.Map('map');
layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://octo.metacarta.com/cgi-bin/mapserv",
{map: '/mapdata/vmap_wms.map', layers: 'basic', format: 'image/jpeg'} );
map.addLayer(layer);
var markers = new OpenLayers.Layer.Marker( "Markers" );
map.addLayer(markers);
var icon = new OpenLayers.Icon('http://boston.openguides.org/markers/AQUA.png',new OpenLayers.Size(10,17));
markers.addMarker(new OpenLayers.Marker(icon, new OpenLayers.LonLat(0,0)));
markers.addMarker(new OpenLayers.Marker(icon, new OpenLayers.LonLat(-5,-10)));
map.setCenter(new OpenLayers.LonLat(0, 0), 0);
map.addControl(new OpenLayers.Control.LayerSwitcher());
}
// -->
</script>
</head>
<body onload="init()">
<h1>OpenLayers Example</h1>
<div id="map"></div>
</body>
</html>