var _locator = CrossGeolocator.Current;
var mapPosition = await _locator.GetPositionAsync();
var mapSpan = MapSpan.FromCenterAndRadius(
new Xamarin.Forms.Maps.Position(mapPosition.Latitude, mapPosition.Longitude),
Distance.FromMiles(2)
);
Map.MoveToRegion(mapSpan);
Xamarin.Forms.Maps.Postion()を使用すると、正しい緯度と経度が計算されます。私はMapSpanに追加するときAndroid用XamarinのGoogleマップでは、位置を中心に設定できません
しかし、座標は、大西洋の真ん中のどこかに変化します。これを引き起こしていることはわかりませんか?
UPDATE:
だから、問題は、Androidプロジェクトに間違いです。何らかの理由で、GoogleMapsは共有プロジェクトのMap Rendererが渡した場所を認識しません。 OnMapReadyはデフォルトのlat/lonを使用しているだけです。
SUCCESS!
async Task<Plugin.Geolocator.Abstractions.Position> GetPositionAsync()
{
var _locator = CrossGeolocator.Current;
Plugin.Geolocator.Abstractions.Position myPosition = await _locator.GetPositionAsync();
return myPosition;
}
public void OnMapReady(GoogleMap googleMap)
{
Plugin.Geolocator.Abstractions.Position myPosition = Task.Run(GetPositionAsync).Result;
map = googleMap;
map.MoveCamera(
CameraUpdateFactory.NewLatLng(
new LatLng(myPosition.Latitude, myPosition.Longitude)));
map.AnimateCamera(
CameraUpdateFactory.ZoomTo(10));
1オリジナル 'mapPosition' は正しいです。これはユーザー(私)の正確な位置を表します。したがって、緯度/経度には何も問題はありません。 2.このコードは、2年間生産中です。何らかの理由で、Android上で全く異なる結果が返されています。したがって、私があなたの答えを誤解していない限り、この場合、「センター」が助けになるとは思われません。 – dizzyguy
@dizzyguy間違ったプロパティを見ていますが、LatitudeDegree/LongitudeDegreesは地図の緯度/経度ではなく、表示されている地図領域の**サイズ**に関連しています。あなたの0.05/0.07は半径2マイルに関連します – SushiHangover
さて、聞いています。 'Map.MoveToRegion(mapSpan) 'が' Center' lat/lonとは対照的に半径' lat/lonを中心にしているのはなぜですか?私は 'mapSpan'オブジェクトを調べました。実際には正しいですが、' Center'プロパティは正しいlat/lonを表示しますが、 'MoveToRegion()'と言うと、中心ではなくスパン半径lat/lonの値を中心にします。私はなぜこれがうまくいけば、現在は間違った緯度/経度に移動しているのか混乱しています。何がうまくいくべきかのコードサンプルを提供できますか?何か正しいとは思わない... – dizzyguy