[OpenLayers-Users] distances in spherical mercator

Alessio Di Lorenzo alessio.dilorenzo at gmail.com
Thu Mar 19 11:52:34 EDT 2009


Hi all,

I'm using the measurement tool in an application that uses google maps as
base.
My problem is that the measurement tool calculate the planar distance
(instead geodesic)...

I tried to use the Util.distVincenty and it works (very good) only if my map
projection is 4326.

Snippet:

function calcVincenty(geometry) {
    var dist = 0;
    for (var i = 1; i < geometry.components.length; i++) {
        var first = geometry.components[i-1];
        var second = geometry.components[i];
        dist += OpenLayers.Util.distVincenty(
            {lon: first.x, lat: first.y},
            {lon: second.x, lat: second.y}
        );
    }
    return dist;
}     


function handleMeasurements(event) {
	
    var geometry = event.geometry;
    var units = event.units;
    var order = event.order;
    var measure = event.measure;
    var element = document.getElementById('output_misure');
    var out = "";
    if(order == 1) {
    	
    	if (map.getProjection()== "EPSG:4326") {
    		out += "Distanza: " + calcVincenty(geometry).toFixed(3)+ " " + units;
    		
    	} else {
    		out += "Distanza: " + measure.toFixed(3)+ " " + units;
    	}
    } else {
    	if (map.getProjection() == "EPSG:4326") {
    		out += "Area: " +
(OpenLayers.Util.approxPolyAreaOnSphere(geometry)/1000000.0).toFixed(3)+ " "
+ units + "q";
    	} else {
    		out += "Area: " + measure.toFixed(3) + " " + units + "q";
    	}
    }
		element.innerHTML = out;
}


If I apply the calcVincenty function to the 900913 projection I get enormous
distance errors...
Is there a way to measure geodesic distances (and areas) also for 900913
projected maps?

Thx in advance, alessio
-- 
View this message in context: http://n2.nabble.com/distances-in-spherical-mercator-tp2503670p2503670.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.




More information about the Users mailing list