Google maps Android版Xamarin中的谷歌地图未能以位置为中心
使用Xamarin.Forms.Maps.position()计算正确的纬度和经度坐标 但是,当我把它添加到MaSPAN时,坐标就改变到大西洋中部的某个地方。不确定是什么原因造成的 更新: 所以问题肯定出在Android项目上。出于某些原因,GoogleMaps无法识别地图渲染器在共享项目中传递的位置。OnMapReady只是使用默认的lat/lon 成功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
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
上吗?我认为OnMapReady
时,GoogleMap似乎以错误的纬度/纬度为中心。我在上面包括了一个屏幕截图。@dizzyguy你是想在OnMapReady完成之前设置地图位置吗?因为这样做行不通
var mapPosition = new Position(38.29, -77.45);
var mapSpan = MapSpan.FromCenterAndRadius(mapPosition, Distance.FromMiles(2));
map.MoveToRegion(mapSpan);