2013-02-15 27 views
0

我需要使用谷歌地圖api來計算兩個地方之間的x和y距離,因爲谷歌地圖使用mercator投影。我不需要兩地之間的距離,而是三角洲x(沿着子午線)和三角洲y(沿着平行線)。如果座標爲(x1,y1)和(x2,y2)的座標爲(lat1,long1)和(lat2,long2)的兩個地方,我想計算x2-x1和y2-y1,這兩個平方當然給了兩地之間的位移平方。谷歌地圖可以直接返回笛卡爾座標嗎?計算x和y距離,而不是使用谷歌地圖在兩個地方之間的位移

+0

你們兩個座標之間的距離此haversine公式表達自己不要acurate的,你要三角洲緯度和經度增量?如果rersult是度數? – AlexWien 2013-02-15 16:30:57

回答

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; 

我不認爲獲得點之間距離的方法存在,但您應該可以使用標準公式。 Here's one

CGFloat DistanceBetweenTwoPoints(CGPoint point1,CGPoint point2) 
{ 
    CGFloat dx = point2.x - point1.x; 
    CGFloat dy = point2.y - point1.y; 
    return sqrt(dx*dx + dy*dy); 
}; 
0

給出兩點WGS84度:

(lon1, lat1), 
(lon2, lat2) 

要獲得增量緯度:

dLat = lat2- lat1; 

同爲longitide

dLon = lon2 - lon1; 

增量結果現在以度爲單位。

如果你想你的結果以米爲單位,你必須在X投影座標,Y

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

當x和y在笛卡爾米coordinaet系統cooridnates。

0

嘗試用於測量PHP

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; 
} 
相關問題