0

Google マップはメルカトル図法を使用するため、2 つの場所の間の x 距離と y 距離を計算するには、Google マップ API を使用する必要があります。2 つの場所の間の距離は必要ありませんが、代わりにデルタ x (子午線に沿って) とデルタ y (緯線に沿って) が必要です。座標が (x1,y1) と (x2,y2) で、緯度と経度が (lat1,long1) と (lat2, long2) の場所が 2 つある場合、x2-x1 と y2-y1 の合計を計算します。もちろん、これら2つの2乗は、2つの場所の間の変位の2乗を与えます。GoogleマップAPIはデカルト座標を直接返すことができますか?

4

3 に答える 3

0

GMSProjection座標 (緯度経度) とポイントの間で変換する方法がいくつかあります。

/** Maps an Earth coordinate to a content coordinate. */
- (CGPoint)pointForCoordinate:(CLLocationCoordinate2D)coordinate;

/** Maps a content coordinate to an Earth coordinate. */
- (CLLocationCoordinate2D)coordinateForPoint:(CGPoint)point;

ポイント間の距離を取得する方法はないと思いますが、標準の式を使用できるはずです。これが1つです:

CGFloat DistanceBetweenTwoPoints(CGPoint point1,CGPoint point2)
{
    CGFloat dx = point2.x - point1.x;
    CGFloat dy = point2.y - point1.y;
    return sqrt(dx*dx + dy*dy );
};
于 2013-02-15T14:56:32.740 に答える
0

WGS84 度の 2 点が与えられた場合:

(lon1, lat1),
(lon2, lat2)

デルタ緯度を取得するには:

dLat = lat2- lat1;

経度も同じ

dLon = lon2 - lon1;

デルタの結果が度単位になりました。

結果をメートルで表示したい場合は、投影された座標を x、y で取得する必要があります

deltaXMeter = x2 - x1;
deltayMeter = y2 - y1;

x と y がデカルト メートル座標系の座標である場合。

于 2013-02-15T16:37:00.653 に答える
0

PHPで2つの座標間の距離を測定するために、このhaversine式を試してください

function haversineGreatCircleDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000)
{
  // convert from degrees to radians
  $latFrom = deg2rad($latitudeFrom);
  $lonFrom = deg2rad($longitudeFrom);
  $latTo = deg2rad($latitudeTo);
  $lonTo = deg2rad($longitudeTo);

  $latDelta = $latTo - $latFrom;
  $lonDelta = $lonTo - $lonFrom;

  $angle = 2 * asin(sqrt(pow(sin($latDelta / 2), 2) +
    cos($latFrom) * cos($latTo) * pow(sin($lonDelta / 2), 2)));
  return $angle * $earthRadius;
}
于 2013-02-18T16:34:10.943 に答える