Ios 如何在mapbox MGLMapView中限制贴图边界?
我使用的是Ios 如何在mapbox MGLMapView中限制贴图边界?,ios,swift,mapbox,Ios,Swift,Mapbox,我使用的是mapbox iOS SDK 3.2.3,找不到任何属性或类似的smth来控制地图边界。我需要限制用户的可见区域。在当前SDK版本中可能吗?当前版本的Mapbox中没有内置任何功能,看起来它可以满足您的需要。你可能会在一天之内得到类似的东西 在地图视图代理中实现mapView区域设置:或mapView:regionDidChangeAnimated: 在这些方法中,检查当前区域。如果位于所需区域之外,请将地图视图重置为所需区域内的某个位置。也就是说,一旦地图视图开始移动到区域之外,就让
mapbox iOS SDK 3.2.3
,找不到任何属性或类似的smth来控制地图边界。我需要限制用户的可见区域。在当前SDK版本中可能吗?当前版本的Mapbox中没有内置任何功能,看起来它可以满足您的需要。你可能会在一天之内得到类似的东西
mapView区域设置:
或mapView:regionDidChangeAnimated:
- 主要目标是测试体验是否仍然令客户满意(是)
- 委托是否可以在不频繁调用委托的情况下正确地将用户限制在范围内?(仍需核实)
- 将巴尔博亚公园用作方形地图框
mglcoordinationbounds
- 仅检查客户是否向北滚动过远
- “太远”的概念是通过一些公差检查的,
epsilon
- 在四面检查出界应该很简单
func mapViewRegionIsChanging (mapView: MGLMapView) { let viewBounds = mapView.visibleCoordinateBounds // Set the map's bounds to Balboa Park, San Diego let boundsBalboaPark = MGLCoordinateBounds( sw: CLLocationCoordinate2D(latitude: 32.71942, longitude: -117.15914), ne: CLLocationCoordinate2D(latitude: 32.74093, longitude: -117.13374)) let deltaNorth = viewBounds.ne.latitude - boundsBalboaPark.ne.latitude let epsilon = 0.025 // Magic number for tolerance of how far 'north' we allow (in degrees); Q.E.D meters if( deltaNorth > epsilon) { mapView.setVisibleCoordinateBounds(boundsBalboaPark, animated: true) } }
我不确定我是否理解您的意图。我想设置地图的边界,例如,仅显示一个城市。因此,用户可以使用此地图进行缩放、平移和常规操作,但只能在有限的区域内进行。Mapbox现在似乎有一个内置的解决方案:好的,正如我看到的,问题更广泛,与MapKit中的问题完全相同。好的,我将尝试使用委托方法来解决这个问题。不幸的是,这是客户对map框架的主要要求之一。谢谢你的帮助!这是一个开源框架,因此您可以随时考虑添加您自己的委托方法(可能添加
shouldMapViewRegionChange
方法)或其他方法来获得所需的内容。我建议您不必跳回到原始中心位置,而可以跳回到所需的范围内。这将大大减少跳跃。我同意。另一个好主意是将视图的缩放设置为最小,这样客户就可以获得重新调整方向的体验。