コード例 #1
0
ファイル: index.js プロジェクト: z0630/turf
 coordEach(geojson, function (coord) {
     var originalDistance = rhumbDistance(origin, coord);
     var bearing = rhumbBearing(origin, coord);
     var newDistance = originalDistance * factor;
     var newCoord = getCoords(rhumbDestination(origin, newDistance, bearing));
     coord[0] = newCoord[0];
     coord[1] = newCoord[1];
     if (coord.length === 3) coord[2] *= factor;
 });
コード例 #2
0
ファイル: index.js プロジェクト: OlympicsORG/turf
/**
 * Returns the distance between a point P on a segment AB, on Mercator projection
 *
 * @private
 * @param {Array<number>} a first segment point
 * @param {Array<number>} b second segment point
 * @param {Array<number>} p external point
 * @param {Object} [options={}] Optional parameters
 * @param {string} [options.units='kilometers'] can be degrees, radians, miles, or kilometers
 * @returns {number} distance
 */
function mercatorPH(a, b, p, options) {
    var delta = 0;
    // translate points if any is crossing the 180th meridian
    if (Math.abs(a[0]) >= 180 || Math.abs(b[0]) >= 180 || Math.abs(p[0]) >= 180) {
        delta = (a[0] > 0 || b[0] > 0 || p[0] > 0) ? -180 : 180;
    }

    var origin = point(p);
    var A = toMercator([a[0] + delta, a[1]]);
    var B = toMercator([b[0] + delta, b[1]]);
    var P = toMercator([p[0] + delta, p[1]]);
    var h = toWgs84(euclideanIntersection(A, B, P));

    if (delta !== 0) h[0] -= delta; // translate back to original position
    var distancePH = rhumbDistance(origin, h, options);
    return distancePH;
}