从运营商获取位置而不是纬度/经度
Posted
技术标签:
【中文标题】从运营商获取位置而不是纬度/经度【英文标题】:Fetch location from carrier not lat/lon 【发布时间】:2013-08-20 04:57:16 【问题描述】:大多数人都会记得旧的诺基亚手机,它显示了您当前所在的地区(手机信号塔)。
这些信息在 ios 上可用吗?如果是这样,如何获取此信息?
所以我的意思是,例如在纽约时,它会返回“fulton”作为地区......
【问题讨论】:
【参考方案1】:您无法访问您在 iOS 上描述的手机信号塔信息,但您始终可以使用 CoreLocation 框架(如果您出于某种原因还希望向后兼容 iOS 5.0,则为 MapKit)进行反向地理编码并获取尽可能详细。
对于 iOS 7.0,您使用 CLGeocoder 对象。
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error)
// Iterate through available placemarks
];
location 参数是一个 CLLocation 对象,您将收到或为用户的位置创建。 对于反向地理编码请求,完成处理程序中的数组将仅包含一个地标。可以找到地标对象的各种属性及其对应的现实世界关系here
【讨论】:
感谢您的回答,我已经实现了。我想要手机信号塔信息的原因是因为 GPS 可能工作,但 wifi/3g 不行。这样地理定位就不起作用了。我唯一的选择是跟踪未解决的位置,然后在连接恢复时解决。虽然这可能会变得很多。所以感谢您的回答,但这对我没有进一步的帮助.. AFAIK,CLLocationManager API 在没有手机信号的情况下工作。 Apple 只是将蜂窝三角测量作为 CLLocationManager 的最后手段。【参考方案2】:我们可以从手机信号塔获得的唯一东西是核心电话框架
Obtaining Information About the Cellular Service Provider
allowsVOIP property
carrierName property
isoCountryCode property
mobileCountryCode property
mobileNetworkCode property
https://developer.apple.com/library/ios/documentation/NetworkingInternet/Reference/CoreTelephonyFrameworkReference/_index.html
【讨论】:
是的,我已经阅读了该信息,我希望无论如何它都是可能的。 为什么不想使用 CoreTelephony 来获取信息?【参考方案3】:Apple 目前不提供任何公开的 API 来揭示手机信号塔的元数据。从他们处理电话 API 设计的方式来看,我认为这也不会成为未来的一项功能。
查看:Getting cell tower information in an iOS application?
【讨论】:
以上是关于从运营商获取位置而不是纬度/经度的主要内容,如果未能解决你的问题,请参考以下文章