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:
  • 在这些方法中,检查当前区域。如果位于所需区域之外,请将地图视图重置为所需区域内的某个位置。也就是说,一旦地图视图开始移动到区域之外,就让它返回
  • 这可能会起作用,但如果用户试图在目标区域外滚动,可能会使视图“结巴”。我不知道你的应用程序是做什么的,但可能值得考虑(a)这是否真的有必要和(b)是否有比限制地图视图滚动更好的方法来避免您所期望的任何问题。

    我采纳了该委托的想法,并实施了该委托,目的是查看有多少口吃或动画刺耳,同时让用户保持在已知的地图框范围内。我对他的答案投了赞成票,但我也想分享一下这个例子

    下面是一个Swift代表,它填写了

    • 主要目标是测试体验是否仍然令客户满意(是)
    • 委托是否可以在不频繁调用委托的情况下正确地将用户限制在范围内?(仍需核实)
    • 将巴尔博亚公园用作方形地图框
      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
    方法)或其他方法来获得所需的内容。我建议您不必跳回到原始中心位置,而可以跳回到所需的范围内。这将大大减少跳跃。我同意。另一个好主意是将视图的缩放设置为最小,这样客户就可以获得重新调整方向的体验。