我使用mapbox-iOS-SDK 3.2.3
并且无法找到任何属性或smth来控制地图边界。我需要限制用户的可见区域。在当前的SDK版本中是否可以使用?
答案 0 :(得分:3)
当前版本的Mapbox没有任何内置功能,看起来它可以满足您的需求。您可能能够通过
获得类似的内容mapViewRegionIsChanging:
或mapView:regionDidChangeAnimated:
这可能会起作用,但它可能会使观看结果不稳定。如果用户试图滚动到目标区域之外。我不知道你的应用程序做了什么,但是可能值得考虑(a)这是否真的有必要以及(b)是否有更好的方法可以避免出现任何问题而不是限制地图视图滚动。 / p>
答案 1 :(得分:2)
我从@Tom Harrington接受了这个想法并实现了该委托,其目的是在将用户保持在已知的Mapbox绑定范围内时查看有多少口吃或动画抖动。我赞成他的回答,但也想分享这个例子。
这是一个Swift委托,用于填写mapViewRegionIsChanging
的委托MGLCoordinateBounds
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)
}
}
此动画显示将mapView移动到巴尔博亚公园以北太远。你看到的口吃是真实的,但可以接受。