1
Xamarin Forms Mapにロードしてピンを追加しています。Xamarinフォームマップ - センターと距離の更新複数のピン
中央緯度/経度を取得するには、以下の方法を使用する:
public static Position GetCenter(List<Position> geoCoordinates)
{
if (geoCoordinates.Count == 1)
{
return geoCoordinates.Single();
}
double x = 0;
double y = 0;
double z = 0;
foreach (var geoCoordinate in geoCoordinates)
{
var latitude = geoCoordinate.Latitude * Math.PI/180;
var longitude = geoCoordinate.Longitude * Math.PI/180;
x += Math.Cos(latitude) * Math.Cos(longitude);
y += Math.Cos(latitude) * Math.Sin(longitude);
z += Math.Sin(latitude);
}
var total = geoCoordinates.Count;
x = x/total;
y = y/total;
z = z/total;
var centralLongitude = Math.Atan2(y, x);
var centralSquareRoot = Math.Sqrt(x * x + y * y);
var centralLatitude = Math.Atan2(z, centralSquareRoot);
var dtoReturn = new Position(centralLatitude * 180/Math.PI, centralLongitude * 180/Math.PI);
return dtoReturn;
}
これは私にCENTERを取得します。
map.MoveToRegion(MapSpan.FromCenterAndRadius(CENTER, Distance.FromMiles(X));
私の質問はRadius
のための二番目のパラメータに関してれます。半径を半径で計算する最良の方法は何ですか?
Distance.FromMiles(X)
あなたは半径の場合、中心から最も遠い点を見つけて、その点と中心の間の距離を外したいとは思わないでしょうか? 潜在的なデータセットの大きさはどれくらいですか? –
ちょっと@ deckertron_9000これはまさに私が今やっていることです!しかし、ポイントが数百マイル離れているようであれば、正しく動作していないように見えます。より正確な方法があるかどうかはわかりませんでした。 – aherrick