Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 核心位置-回退、位置缓存和备选方案_Iphone_Core Location_Ipod - Fatal编程技术网

Iphone 核心位置-回退、位置缓存和备选方案

Iphone 核心位置-回退、位置缓存和备选方案,iphone,core-location,ipod,Iphone,Core Location,Ipod,我有几个关于核心位置的问题 1) 如果用户拒绝我的应用程序使用核心位置的权限,或者由于某种原因核心位置不可用,是否存在回退?(例如,设备区域设置?) 2) 我可以缓存设备的位置以备下次使用吗?核心位置本身能做到这一点吗 3) 我真的需要在仲春季节在用户区域的日落时间,一旦我有了设备的纬度和经度,我就有一个功能可以做到这一点。也许我可以根据地点对时间做个假设?(例如:在美国,假设约为晚上7:00。) 编辑: 我真的在为一个应用程序计算用户区的日落。与地图无关。我正在考虑以下一系列事件: 检查核心

我有几个关于核心位置的问题

1) 如果用户拒绝我的应用程序使用核心位置的权限,或者由于某种原因核心位置不可用,是否存在回退?(例如,设备区域设置?)

2) 我可以缓存设备的位置以备下次使用吗?核心位置本身能做到这一点吗

3) 我真的需要在仲春季节在用户区域的日落时间,一旦我有了设备的纬度和经度,我就有一个功能可以做到这一点。也许我可以根据地点对时间做个假设?(例如:在美国,假设约为晚上7:00。)

编辑:

我真的在为一个应用程序计算用户区的日落。与地图无关。我正在考虑以下一系列事件:

  • 检查核心位置是否可用。如果是,请使用它并将其存储在NSUserPreferences中。如果核心位置不可用,请转至备用
  • 检查存储位置。如果储存了,就使用它。如果没有,请继续
  • 检查用户选择的时间
2)从CLLocationManager的在线文档:

位置服务尽快返回初始位置,在可用时返回缓存信息

您可以检查CLLocation时间戳以查看它是否为缓存值

3) 如果您确实决定使用区域设置作为初始TZ近似值,请记住,用户会旅行,并且可能不会立即重置其区域设置。您可以通过以下方式获取当前TZ对象:

[NSTimeZone localTimeZone]
1) 严格地说,如果用户不允许使用CoreLocation,或者如果已授予权限但CoreLocation不可用,则没有其他方法可以将用户的位置作为纬度、经度对获取。在所有情况下,使用区域设置可能都不起作用。首先,它只会给你一个近似值,这可能离现实太远了。然而,这取决于你判断这个近似值是否适合你的应用程序。此外,有些用户使用的语言环境与他们所在国家的语言环境不同。而且,您不能保证出国旅行的人每次都会调整日期/时间

2) 默认情况下,Core Location缓存从GPS装置检索到的最后一个位置。但是,对于出国旅行的人来说,此缓存位置肯定是错误的(即使对于仅旅行几英里的人来说也是如此),通常,您应该放弃缓存值,并在每次对用户进行本地化。我知道,对于在国内旅行的人来说,这(通常)不会造成很大的问题。但这取决于国家:在意大利境内旅行不会改变时间,但在美国各地旅行可能会改变时间长达3小时

3) 我建议尝试使用核心位置,如果出现问题,只需让用户输入他/她的本地时间或位置(城市应该足以满足您的需要)。如果选择询问用户的位置,则可以获得相应的纬度/经度对,但这将需要一个工作的网络连接