2017-11-18 6 views
0
 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マップでは、位置を中心に設定できません

enter image description here

しかし、座標は、大西洋の真ん中のどこかに変化します。これを引き起こしていることはわかりませんか?

enter image description here

enter image description here

UPDATE:

だから、問題は、Androidプロジェクトに間違いです。何らかの理由で、GoogleMapsは共有プロジェクトのMap Rendererが渡した場所を認識しません。 OnMapReadyはデフォルトのlat/lonを使用しているだけです。

enter image description here

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)); 

答えて

0

MapSpan特性LatitudeDegreeLongitudeDegreesが張られている緯度と経度の度を指す(すなわち、そのビュー内に示されているマップ度の数。)

あなたが探している場合あなたのスパンの中の地図の中心の緯度/経度はCenterのプロパティであるMaps.Postionのオブジェクトを参照してください。

再:https://developer.xamarin.com/api/type/Xamarin.Forms.Maps.MapSpan/

例:

var mapPosition = new Position(38.29, -77.45); 
var mapSpan = MapSpan.FromCenterAndRadius(mapPosition, Distance.FromMiles(2)); 
map.MoveToRegion(mapSpan); 
+0

1オリジナル 'mapPosition' は正しいです。これはユーザー(私)の正確な位置を表します。したがって、緯度/経度には何も問題はありません。 2.このコードは、2年間生産中です。何らかの理由で、Android上で全く異なる結果が返されています。したがって、私があなたの答えを誤解していない限り、この場合、「センター」が助けになるとは思われません。 – dizzyguy

+0

@dizzyguy間違ったプロパティを見ていますが、LatitudeDegree/LongitudeDegreesは地図の緯度/経度ではなく、表示されている地図領域の**サイズ**に関連しています。あなたの0.05/0.07は半径2マイルに関連します – SushiHangover

+0

さて、聞いています。 'Map.MoveToRegion(mapSpan) 'が' Center' lat/lonとは対照的に半径' lat/lonを中心にしているのはなぜですか?私は 'mapSpan'オブジェクトを調べました。実際には正しいですが、' Center'プロパティは正しいlat/lonを表示しますが、 'MoveToRegion()'と言うと、中心ではなくスパン半径lat/lonの値を中心にします。私はなぜこれがうまくいけば、現在は間違った緯度/経度に移動しているのか混乱しています。何がうまくいくべきかのコードサンプルを提供できますか?何か正しいとは思わない... – dizzyguy

関連する問題