[OpenLayers-Users] No lonlat anywhere, Map, Markers with pixel

Génesis García Morilla ggarcia at ihman.com
Wed Aug 3 17:58:18 EDT 2011


Hello to everybody I'm newbie using Openlayers. After googling for a 
week and not find solution I have signed this list, I hope someone has 
asimilar problem and could help me a little bit xD

I would like to know if there is a way to add a Marker using pixels. I 
know already that we can use this:

var pixel = new OpenLayers.Pixel ( posx , posy );
var lonlat = map_OpenLayers.getLonLatFromPixel ( pixel );

The problem is that If I make zoom during the insertion of a new marker 
I get a wrong positioning. I need a factor between my map size and the 
OpenLayers map container... anyway.. I don't want you to get lose with 
this xD I just would like to use pixel everywhere, no more lonlat, that 
would make me so happy!
I had success with Vector instead of Marker, using Geometry.Point, but 
Vector has a big problem -> If you drag with the mouse to move into your 
map you will not see element vector painted till you unclick the mouse, 
here you can see it:
http://openlayers.org/dev/examples/sundials.html
(make sure you have a sun outside your viewarea and then drag the map to 
try to see the sun again)

Now do the same with Markers (you will notice that you always see your 
markers when you are dragging)
http://openlayers.org/dev/examples/markers.html

if it can be of any use here is my code:
// MAP

// Bounds
var map_OpenLayers_bounds = new OpenLayers.Bounds(0.0, -10000, 20000, 0.0);

// Options
   var options = {
     maxExtent: map_OpenLayers_bounds,
     maxResolution: 64.000000,
     numZoomLevels: 7
   };

   // Map
var  map_OpenLayers = new OpenLayers.Map("map", options);


// MARKER

// Transformation from pixel to lonlat
   var pixel = new OpenLayers.Pixel(posx,posy);

   var lonlat = map_OpenLayers.getLonLatFromPixel(pixel);

// Feature
   var feature = new OpenLayers.Feature(map_markers, lonlat);
   feature.closeBox = true;
   feature.data.popupContentHTML = popupContentHTML;
   feature.data.overflow = false;
   feature.data.icon = new OpenLayers.Icon("img/light.png", new 
OpenLayers.Size(53,59), new OpenLayers.Pixel(0,0));

// Marker
   var marker = feature.createMarker();

   map_markers.addMarker(marker);
.....

Thanks in advance!!!
PoorNewbie xD


More information about the Users mailing list