从运营商获取位置而不是纬度/经度

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?

【讨论】:

以上是关于从运营商获取位置而不是纬度/经度的主要内容,如果未能解决你的问题,请参考以下文章

Swift:获取用户的位置坐标为纬度和经度?

如何从纬度/经度获取附近的位置?

使用gps从纬度和经度获取当前位置

给定两个位置,如何从谷歌地图获取所有纬度和经度

如何使用纬度和经度坐标从某个位置获取时区?

如何使用纬度和经度坐标从某个位置获取时区?