Mapbox iOS SDK设置显示位置:FALSE导致崩溃

Mapbox iOS SDK设置显示位置:FALSE导致崩溃,mapbox,Mapbox,我有一个具有特定平铺区域的应用程序。如果用户不在该区域,并试图在地图上显示其位置,我希望应用程序拒绝该请求并显示警报。我认为最好的方法是: 用户点击按钮,将userTrackingMode设置为RMUserTrackingModeFollow并将showsuserLocation设置为TRUE 在map委托中,我响应mapView:didUpdateUserLocation:,并检查以确保用户的位置位于mapView的tilesource边界框内 如果用户的位置在边界框之外,我将userTrac

我有一个具有特定平铺区域的应用程序。如果用户不在该区域,并试图在地图上显示其位置,我希望应用程序拒绝该请求并显示警报。我认为最好的方法是:

  • 用户点击按钮,将
    userTrackingMode
    设置为
    RMUserTrackingModeFollow
    并将
    showsuserLocation
    设置为TRUE
  • 在map委托中,我响应
    mapView:didUpdateUserLocation:
    ,并检查以确保用户的位置位于mapView的tilesource边界框内
  • 如果用户的位置在边界框之外,我将
    userTrackingMode
    设置为
    RMUserTrackingModeNone
    并将
    showsuserslocation
    设置为FALSE
  • 当我将
    userTrackingMode
    设置为
    RMUserTrackingModeNone
    时,没有什么不好的事情发生。但是,当我将
    showsuserLocation
    设置为FALSE时,总会出现类似以下情况的崩溃:

    
    ***由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“***-[\uu NSSetM addObject:]:对象不能为零”
    ***第一次抛出调用堆栈:
    (
    0 CoreFoundation 0x028291e4例外预处理+180
    1 libobjc.A.dylib 0x025a88e5 objc_异常_抛出+44
    2 CoreFoundation 0x028c8a7e-[\uu NSSetM addObject:][638
    3 IMAMODULARMAPAP 0x00243b02-[RMMapView ADDNATION:][146
    4 IMAModuleARMAPAP 0x00247bdb-[RMMapView位置管理器:didUpdateToLocation:fromLocation:][7115
    5 CoreLocation 0x00c7355e CLLocation Coordination2 DGETDISTANCEFrom+18294
    6芯位置0x00c72af4 CLLOCATION坐标2 DGETDISTANCEFOM+15628
    7 CoreLocation 0x00c6fe40 CLLocation Coordination2DGETDISTANCEFrom+4184
    …等


    为什么这会使应用程序崩溃?是否有其他地方我应该检查用户的位置是否在地图中?

    我不建议更改
    mapView.userTrackingMode
    ,如果您不打算使用地图始终移动的默认行为来实际跟踪用户。相反,我会将其保留为
    RMUserTrackingModeNone
    ,实现您自己的
    CLLocationManager
    ,并在对用户位置的代理回调中,检查它们是否满足您的条件。如果满足,我会将您自己的
    RMANotation
    添加到用户的映射中,而不是依赖默认的
    RMUserLocation
    注释。您可以从其实现中借用(在该类中以及
    RMMapView
    中)使其看起来正确。

    发现异常的最佳方法是设置一个异常断点。转到左侧的断点选项卡,左下角是加号。您将在那里看到菜单项。是的,我知道崩溃发生的方式和位置(在SDK代码中)。我的问题更具体一些,关于SDK,以及我应该在哪里/如何测试用户的位置是否在中的tilesource的边界框内,因为它正在崩溃。发布showsuserLocation的SDK头声明如何?如果您将其设置为FALSE(which==NO==0),并且它需要一个对象(如@0),那么如果SDK将该标量值放入NSMutableSet中,您就会看到确切的崩溃。@Danh
    showsuserLocation
    是一个布尔属性,它的set方法被覆盖,以包括一个进程来启动应用程序内的起始用户跟踪。同样,这是一个试图找出我需要通过什么进程来预处理的问题使用SDK基于区域进行用户跟踪-不专门检查SDK中的bug。我认为我能帮助您的最好方法是建议重写以下问题:标题应该是:“如何在Mabbox中排除区域跟踪”。正文应该是:“这是我为此编写的代码,但它不起作用。事实上,它在我的源代码中的这一行崩溃了。请将ios标记放回,并将崩溃日志替换为一行,该行显示“崩溃日志在集合中显示零插入”。好的,因此没有内置的“批准”功能。”用户的位置是否对地图有效?我想这排除了用户在不创建自定义GPS气泡的情况下对任何非全局的平铺集进行跟踪的可能性。否则它只会移动到空白。不,没有,但当你这样说时,这听起来是一个非常有用的功能。我可以在
    RMMapViewDelegate
    中看到一个回调添加以支持此类功能。要打开票证和/或拉取请求吗?