Venkat Maridu
Venkat Maridu

Reputation: 902

Openlayers - Getting Incorrect LonLat while transform?

I have trying to get Latitude and Longitude of a Point. But While transforming it's not returning the correct LonLat. It's big number that is not a lonlat point for sure.

I have tried for some solutions but didn't get result. What else could be failing?

JS Code I have Tried

map = createMap("deviceMap");
var fromProjection = new OpenLayers.Projection("EPSG:4326"); 
var toProjection = new OpenLayers.Projection("EPSG:900913"); 

map.events.register('click', map, function handleMapClick(e) {
          lonLat = self.map.getLonLatFromViewPortPx(e.xy).
          transform(map.getProjectionObject(), toProjection);
          prompt("",lonLat);
});

Upvotes: 2

Views: 3106

Answers (2)

Venkat Maridu
Venkat Maridu

Reputation: 902

Finally got answer

map.events.register('click', map, function handleMapClick(e) {
                var toProjection = new OpenLayers.Projection("EPSG:4326");
                var lonLat = map.getLonLatFromPixel(e.xy).
                             transform(map.getProjectionObject(), toProjection);
    });

Upvotes: 4

martin jrk
martin jrk

Reputation: 185

  • EPSG:4326
    • should refer to WGS 84,
    • has decimal degree values
  • EPSG:900913
    • refers to WGS84 Web Mercator
    • has metric values, it is x/y axis coordinate system, so "high numbers" are expected

If I understand you right, you should have in variable lonLat a high number.

"LonLat" in OpenLayers does not mean, it will be only longitude/latitude, see documentation here:

  • lon {Number} The x-axis coordinate in map units. If your map is in a geographic projection, this will be the Longitude. Otherwise, it will be the x coordinate of the map location in your map units.

  • lat {Number} The y-axis coordinate in map units. If your map is in a geographic projection, this will be the Latitude. Otherwise, it will be the y coordinate of the map location in your map units.

So if you want to get a real LonLat coordinates, you should not convert it (and use EPSG:4326) or convert it to the other coordinate system, not EPSG:900913.

By the way, OpenLayers started to use 900918 (numeric equivalent to GOOGlE), It was define by Mr. Christopher Schmidt, firstly it was not accepted by European Petroleum Survey Group (EPSG). Then EPSG changed their mind and gave them number: 3857 - WGS84 Pseudo-Mercator.

Upvotes: 2

Related Questions