Xamarin.Forms.Maps:MapSpan中经纬度度数的含义及使用疑问
关于Xamarin.Forms.Maps中MapSpan的经纬度参数及VisibleRegion的疑问解答
1. MapSpan初始化参数的含义及VisibleRegion的显示范围
你写的这段代码:
// 第一个10为纬度度数 // 第二个10为经度度数 MapSpan mapSpan = new MapSpan(position, 10, 10);
这里的两个10分别代表纬度跨度和经度跨度,意思是地图会以position为中心,展示一个南北方向覆盖10度纬度、东西方向覆盖10度经度的区域。
需要纠正的是:纬度1度大约等于69英里,所以10度纬度对应的是约690英里的南北范围,而非你提到的69英里。当用这个MapSpan设置地图显示区域后,Maps.VisibleRegion返回的LatitudeDegrees和LongitudeDegrees就会是10,它代表当前屏幕可见的经纬度跨度范围。
只要Pin的坐标落在这个VisibleRegion范围内,就会被展示在地图上。
2. VisibleRegion与Pins加载的关系
Maps.VisibleRegion的LatitudeDegrees和LongitudeDegrees本身不会自动控制加载的Pins数量:
- Xamarin.Forms.Maps默认会加载所有你添加到地图实例上的Pins,哪怕这些Pins在当前屏幕可见区域之外。
- 如果你想只展示屏幕可见范围内的Pins,需要自行实现逻辑:通过VisibleRegion计算当前可见区域的边界(最小/最大纬度、最小/最大经度),然后遍历所有Pins,仅将坐标在该边界内的Pins添加到地图上,或者过滤掉屏幕外的Pins。
内容的提问来源于stack exchange,提问作者Jimmy
相关产品推荐
相关产品推荐

