Saturday 9 April 2016

openlayers - Get a LonLat point by distance or between 2 lonlat points


I know two latlng points and also can get distance between 2 points. But how do I can get a latlng point on 1/3 of the distance of 2 points. latlng1 = [37.7052918, -8.8420179] latlng2 = [37.7062884, -8.8425087]


var point1 = new OpenLayers.Geometry.Point(latlng1.lon, latlng1.lat);
var point2 = new OpenLayers.Geometry.Point(latlng2.lon, latlng2.lat);


var line = new OpenLayers.Geometry.LineString([p1, p2]);
alert(line.getGeodesicLength(new OpenLayers.Projection("EPSG:4326")));

Answer



I found a better solution.


http://www.movable-type.co.uk/scripts/latlong.html


LatLon.prototype.destinationPoint = function(distance, bearing, radius) {
radius = (radius === undefined) ? 6371e3 : Number(radius);

var delta = Number(distance) / radius;

var Theta = Number(bearing).toRadians();

var Phi1 = this.lat.toRadians();
var Lambda1 = this.lon.toRadians();

var sinPhi1 = Math.sin(Phi1), cosPhi1 = Math.cos(Phi1);
var sindelta = Math.sin(delta), cosdelta = Math.cos(delta);
var sinTheta = Math.sin(Theta), cosTheta = Math.cos(Theta);

var sinPhi2 = sinPhi1 * cosdelta + cosPhi1 * sindelta * cosTheta;

var Phi2 = Math.asin(sinPhi2);
var y = sinTheta * sindelta * cosPhi1;
var x = cosdelta - sinPhi1 * sinPhi2;
var Lambda2 = Lambda1 + Math.atan2(y, x);

return new LatLon(Phi2.toDegrees(), (Lambda2.toDegrees()+540)%360-180);
// normalise to −180..+180°
};

No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...