1

Google マップで 2 つのポイント範囲を選択する方法。例:50mまたは100m

このコードを使用して距離を計算しています。

    public class DistanceCalculator {

       public static final double Radius = 6378.1;

       public double CalculationByDistance(GeoPoint startp, GeoPoint endp) {
          double lat1 = startp.getLatitudeE6()/1E6;
          double lat2 = endp.getLatitudeE6()/1E6;
          double lon1 = startp.getLongitudeE6()/1E6;
          double lon2 = endp.getLongitudeE6()/1E6;
          double dLat = Math.toRadians(lat2-lat1);
          double dLon = Math.toRadians(lon2-lon1);
          double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
          Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
          Math.sin(dLon/2) * Math.sin(dLon/2);
          double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
          return Radius * c;

       }
    }
4

2 に答える 2

0

緯度と経度を使用して、度を距離に変換して計算してみます (たとえば、緯度 1 度から海里)。

于 2012-05-17T14:32:35.840 に答える
0

MapViewController には zoomToSpan(int, int) というメソッドがあります。したがって、2 つのポイントの中心を見つけて、それらの間のスパンにズームするだけで済みます。ドキュメントは次のとおりです。

public void zoomToSpan(int latSpanE6,int lonSpanE6)

指定された範囲の緯度と経度が表示されるように、マップのズームを調整しようとします。ズームでは個別のレベルしか達成できず、マップの縦横比が指定された比率と一致しない可能性があるため、適合の質が異なる場合があります。私たちが保証する唯一のことは、ズーム後、新しい緯度または新しい経度の少なくとも 1 つが、対応するパラメーターの 2 倍以内になることです。

于 2012-05-17T14:28:03.823 に答える