Mobile 正在确认SDK中的位置访问

Mobile 正在确认SDK中的位置访问,mobile,gps,lua,location,coronasdk,Mobile,Gps,Lua,Location,Coronasdk,是否有任何方法可以直接请求访问用户的位置,或者是否有某种事件侦听器在授予位置访问权限后会通知我?我遇到了一个与Director类使用MapView对象有关的问题,我认为这取决于此 我有一个包含MapView组件的二级视图。当director类切换到该视图时,我的MapView对象被实例化,我尝试获取用户的位置。我遇到的问题是,在我的测试设备(iPhone4)上,试图访问用户的位置发生在他们授予我位置访问权限之前,因此只有当他们离开屏幕,然后返回屏幕(在Director库中再次实例化)时,我才能使

是否有任何方法可以直接请求访问用户的位置,或者是否有某种事件侦听器在授予位置访问权限后会通知我?我遇到了一个与Director类使用MapView对象有关的问题,我认为这取决于此

我有一个包含MapView组件的二级视图。当director类切换到该视图时,我的MapView对象被实例化,我尝试获取用户的位置。我遇到的问题是,在我的测试设备(iPhone4)上,试图访问用户的位置发生在他们授予我位置访问权限之前,因此只有当他们离开屏幕,然后返回屏幕(在Director库中再次实例化)时,我才能使用他们的位置

这显然不能令人满意


有什么帮助/建议吗?

问题的解决方案在很大程度上取决于您的代码。如果你想得到帮助,你应该在你的SO问题中明确地包含相关的代码位

我将猜测并假设您的代码与MapView示例类似:

如果是这种情况,问题是检索位置的时间很晚

local function callMap()
        -- Fetch the user's current location
        -- Note: in XCode Simulator, the current location defaults to Apple headquarters in Cupertino, CA
        local currentLocation = myMap:getUserLocation()
        local currentLatitude = currentLocation.latitude
        local currentLongitude = currentLocation.longitude
        ...
您想要的是更早执行的代码。理想情况下,当应用程序启动时。用户将立即收到“此应用程序希望访问GPS”消息,因此在查看地图视图之前,他们将有更多时间“批准”


您可以做的另一件事是使用缓存。将最新的已知位置存储在某个位置(配置文件或数据库,具体取决于您的设置)。当连接丢失或尚未检索时,请在地图上显示最后一个已知位置。

要澄清,真正的问题是,在我尝试获取用户位置之前,我无法确定用户是否已授予位置访问权限。我想知道是否有一个事件、回调或类似的性质,我可以用来响应用户对我的位置访问请求的批准。看起来不是这样的。当gps访问被禁用时,您得到的纬度和经度是多少?另外,请尝试检查location事件上的
event.isError
字段。也许你可以用这个。我应该进一步澄清/更准确地说。我为“mapAddress”事件添加了一个运行时侦听器。当用户访问相关屏幕时,会实例化一个MapView,我尝试调用map:getUserLocation()。因为他们还没有授予我位置访问权限,所以对getUserLocation的调用似乎以静默方式失败,“mapAddress”事件侦听器从未被调用。在授予我位置访问权限后,如果他们离开屏幕并返回屏幕(从而实例化一个新的mapView,重新启动整个过程),我的事件侦听器将被触发。我明白这一点。这就是为什么我要告诉你——在程序启动时请求用户位置一次。即使用户从未创建地图视图。再加上最后一个已知的位置,你已经很好了。