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.
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users