On Nov 2, 2011, at 5:46 PM, Puneet Kishor wrote:

> 
> On Nov 2, 2011, at 4:37 PM, Puneet Kishor wrote:
> 
>> I am reusing the sample code from the Handler.Box documentation
>> 
>>      var control = new OpenLayers.Control();
>>      OpenLayers.Util.extend(control, {
>>              draw: function () {
>>                      // this Handler.Box will intercept the shift-mousedown
>>                      // before Control.MouseDefault gets to see it
>>                      this.box = new OpenLayers.Handler.Box(
>>                              control,
>>                              {done: this.notice},
>>                              {keyMask: OpenLayers.Handler.MOD_SHIFT}
>>                      );
>>                      this.box.activate();
>>              },
>>      
>>              notice: function (bounds) {
>>                      OpenLayers.Console.userError("bounds: " + bounds);
>>                      var bbox = bounds.transform(proj.google, 
>> proj.latlng).toBBOX();
>>                      OpenLayers.Console.userError("bbox: " + bbox);
>>              }
>>      });
>>      
> 
> I am doing something wrong here trying to convert pixels to lat lng
> 
>       var bbox = bounds.toArray();
>       var p1 = map.getLonLatFromPixel(bbox[0]);
>       var str  = "Lat: " + p1.lat + " (Pixel.x:" + p1.x + ") Lon: " + p1.lon 
> + " (Pixel.y:" + p1.y + ")\n";
>       alert(str);
> 
> produces the following alert
> 
>       Lat: NaN (Pixel.x:undefined) Lon: NaN (Pixel.y:undefined)
> 
> 


The following is my solution

        // 'p' is not really lon lat point even though it seems like one
        // actually it is pixel in image space
        var p = bounds.getCenterLonLat();
        var x = p.lon, y = p.lat;

        // 'pixel' is not really pixel, but is a point in base map coords
        // which, in this case, is in spherical mercator since my base map 
        // is a Google map
        var pixel = new OpenLayers.Pixel(x, y);

        // finally, a real lat lng point
        var ll = map.getLonLatFromPixel(pixel).transform(proj.google, 
proj.latlng);

The above works for me. It would, in my opinion, be useful to embellish the 
documentation with such information.

Many thanks,

--
Puneet Kishor_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to