Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps Android版Xamarin中的谷歌地图未能以位置为中心_Google Maps_Xamarin_Xamarin.forms_Geolocation - Fatal编程技术网

Google maps Android版Xamarin中的谷歌地图未能以位置为中心

Google maps Android版Xamarin中的谷歌地图未能以位置为中心,google-maps,xamarin,xamarin.forms,geolocation,Google Maps,Xamarin,Xamarin.forms,Geolocation,使用Xamarin.Forms.Maps.position()计算正确的纬度和经度坐标 但是,当我把它添加到MaSPAN时,坐标就改变到大西洋中部的某个地方。不确定是什么原因造成的 更新: 所以问题肯定出在Android项目上。出于某些原因,GoogleMaps无法识别地图渲染器在共享项目中传递的位置。OnMapReady只是使用默认的lat/lon 成功 var _locator = CrossGeolocator.Current; var mapPos

使用Xamarin.Forms.Maps.position()计算正确的纬度和经度坐标

但是,当我把它添加到MaSPAN时,坐标就改变到大西洋中部的某个地方。不确定是什么原因造成的

更新:

所以问题肯定出在Android项目上。出于某些原因,GoogleMaps无法识别地图渲染器在共享项目中传递的位置。OnMapReady只是使用默认的lat/lon

成功

        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);
异步任务GetPositionAsync() { var _locator=交叉地理定位器.Current; Plugin.geologitor.Abstractions.Position myPosition=wait_locator.GetPositionAsync(); 返回我的位置; } 4月1日公开作废(谷歌地图谷歌地图) { Plugin.geologitor.Abstractions.Position myPosition=Task.Run(GetPositionAsync).Result; 地图=谷歌地图; 地图摄影机( CameraUpdateFactory.NewLatLng( 新LatLng(myPosition.lation,myPosition.Longitude)); 动画片( CameraUpdateFactory.ZoomTo(10));
地图span属性
LatitudeDegree
longtudedegrees
指跨越的纬度和经度(即地图视图中显示的度数)

如果要查找范围中地图中心的lat/lng,请参考
center
属性,该属性是
Maps.position
对象

关于:

例如:

        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”是正确的。它表示用户(me)的确切位置。所以lat/lon没有问题。2.这段代码已经在生产中运行了2年。现在,由于某种原因,它在Android上返回了一个完全不同的结果。因此,除非我误解了你的答案,否则,
Center
似乎对这种情况没有帮助。@dizzyguy你看到的属性是错误的,lat度/纵坐标与显示的地图区域大小有关,而不是地图的纬度/液化天然气位置。我听说你的0.05/0.07与2英里半径有关。为什么
map.MoveToRegion(mapSpan)
以半径“lat/lon”为中心而不是
中心
lat/lon?我检查了
mapSpan
对象,事实上您是正确的,
中心
属性显示了正确的lat/lon,但当我说,
移动区域()
,它以跨度半径lat/lon值为中心,而不是中心。我不明白为什么这会起作用,现在它正移到错误的lat/lon。你能提供一个应该起作用的代码示例吗?似乎有些不对劲……可能是问题出在
Android.Gms.Maps.GoogleMap
上吗?我认为e> MoveToRegion方法现在是正确的。但是当我在Android项目中调用
OnMapReady
时,GoogleMap似乎以错误的纬度/纬度为中心。我在上面包括了一个屏幕截图。@dizzyguy你是想在OnMapReady完成之前设置地图位置吗?因为这样做行不通
var mapPosition = new Position(38.29, -77.45);
var mapSpan = MapSpan.FromCenterAndRadius(mapPosition, Distance.FromMiles(2));
map.MoveToRegion(mapSpan);