私は Android アプリに取り組んでおり、地理的な地点の緯度と経度があり、X メートル (北) と Y メートル (西) から位置する場所の座標を取得したいと考えています。GeoPoint はこの種の機能を実装していないので、自分でそれを行う方法を見つけなければなりません...
いくつか検索しましたが、興味深いものは見つかりませんでした。どうすればよいか分かりますか?
2 つの完全な経度間の距離は緯度に依存し、距離は高度にも依存するため、注意が必要です...
簡単にするために、経度と緯度を推測してみて、推測と原点の間の距離を確認します。2 点間の距離の取得は既に行われているため、これは簡単です。
1 つの軸から始めて、北 X メートルの位置が見つかるまで一種の二分探索を行います。次に、もう一方の軸についても同じことを行います。
次のメソッドを使用すると、緯度と経度を取得して元の場所に追加し、最終的な場所に到達します。これは、地球の曲率を無視しているため、比較的短い距離でのみ機能することに注意してください。
private static final float GAP_LAT_LON = 0.00005f; //aprox 5 meters
private float results[] = new float[1];
private PointF getGaps(Location initial, float distanceX, float distanceY, PointF gaps){
Location.distanceBetween(initial.getLatitude(), initial.getLongitude(), initial.getLatitude(), initial.getLongitude() + GAP_LAT_LON, results);
double factorX = GAP_LAT_LON / results[0];
Location.distanceBetween(initial.getLatitude(), initial.getLongitude(), initial.getLatitude() + GAP_LAT_LON, initial.getLongitude(), results);
double factorY = GAP_LAT_LON / results[0];
if(gaps == null)
gaps = new PointF();
gaps.set((float)(distanceX * factorX), (float)(distanceY * factorY));
return gaps;
}
//to use
private void teste(){
PointF gaps = null;
Location initial = new Location("");
initial.setLatitude(23.5);
initial.setLongitude(13.2);
//100 meters West/East and 300 meters North/South
getGaps(initial, 100, 300, gaps);
//gaps.x returns x offset to add/subtract to initial latitude
//gaps.y returns y offset to add/subtract to initial longitude
}
幸運を