[OpenLayers-Users] How to add two clickable
buttons? (OpenLayers.Control.Button)
Lehtonen, Mika
mika at digikartta.net
Wed Nov 12 14:00:14 EST 2008
Hi Harry,
check this:
http://www.mail-archive.com/users@openlayers.org/msg05106.html
I'm not a CSS expert but got this working after I removed absolute
positioning from my button styles and put float:left into olControlPanel
div. I think after you got your panel horizontal things get easier.
- mika -
Harry Wood kirjoitti:
> I'm trying to add two clickable buttons (OpenLayers.Control.Button). Should be easy enough. Here's how far I've got: http://funmap.co.uk/openlayers-test/buttons.html (code below)
>
> For some reason having the css class 'olControlPanel' causes it to almost work, but this is a mystery to me (copied off some other example) and as the red borders demonstrate, I don't seem to have much control over where these click regions go.
>
> I suspect I'm barking up the wrong tree with that. There should be a much easier way of getting the click events to call my functions. OpenLayers.Function.bind perhaps, but I can't work out how to call this.
>
> Any pointers much appreciated.
>
> Harry Wood
> http://harrywood.co.uk
>
> Here's my html:
>
> <html>
> <head>
> <title>OpenLayers buttons experiment</title>
> <script src="http://openlayers.org/api/OpenLayers.js" type="text/javascript"></script>
> <script src="http://openstreetmap.org/openlayers/OpenStreetMap.js" type="text/javascript"></script>
>
> <style>
> .button1Display {
> margin-left: 60px;
> margin-top: 10px;
> width: 36px;
> height: 19px;
> background-image: url("./mybutton1.png");
> }
>
> .button2Display {
> margin-left: 110px;
> margin-top: 10px;
> width: 36px;
> height: 19px;
> background-image: url("./mybutton2.png");
> }
>
> /* olControlPanel is a mysterious css class of elements which seem to catch button click events */
> .olControlPanel div {
> margin-left: 60px;
> margin-top: 10px;
> width: 36px;
> height: 19px;
> border: 1px solid RED;
> }
>
> #map {
> border: 1px solid #222;
> width: 300px;
> height: 300px;
> }
>
> </style>
>
> <script type="text/javascript">
> <!--
> var map;
> var layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
> var layerMaplint = new OpenLayers.Layer.OSM.Maplint("Maplint")
> var layerTah = new OpenLayers.Layer.OSM.Osmarender("Tiles at Home");
> var layerMarkers = new OpenLayers.Layer.Markers("POIs");
>
>
> function myFunction1() {
> alert('myFunction1');
> }
> function myFunction2() {
> alert('myFunction2');
> }
>
> function init(){
>
> map = new OpenLayers.Map('map', {
> maxExtent: new OpenLayers.Bounds(-20037508,-20037508,20037508,20037508),
> numZoomLevels: 18,
> maxResolution: 156543,
> units: 'm',
> projection: "EPSG:41001"
> });
>
> map.addLayers([layerMapnik, layerMaplint, layerTah, layerMarkers]);
> map.addControl(new OpenLayers.Control.LayerSwitcher());
>
> var panel = new OpenLayers.Control.Panel();
>
> var button1 = new OpenLayers.Control.Button({title:'title1',
> displayClass: "button1Display",
> trigger: myFunction1});
>
> var button2 = new OpenLayers.Control.Button({title:'title2',
> displayClass: "button2Display",
> trigger: myFunction2});
> panel.addControls([button1,button2]);
> map.addControl(panel);
>
> var lat=51.508;
> var lon=-0.118;
> var zoom=8;
>
> var lonLat = new OpenLayers.LonLat(lon, lat).transform(new OpenLayers.Projection("EPSG:4326"), map.getProjectionObject());
> map.setCenter (lonLat, zoom);
>
> }
> // -->
> </script>
> </head>
>
> <body onload="init()">
>
> <div id="map" width="400px" height="400px"></div>
>
> </body>
> </html>
>
>
>
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
>
More information about the Users
mailing list