3

如何通过代码获取 iPhone 的当前位置?我需要使用 GPS 跟踪位置。

4

7 回答 7

17

开发人员站点上有(与核心功能一样)综合文档,您可能会发现此示例很有用;

要记住的关键点是;

1)一旦您开始接收位置更新,它们就会异步到达,您需要在它们到来时对其进行响应。检查准确性和时间戳以确定您是否要使用该位置。

2) 不要忘记在获得所需位置后立即停止接收更新(这可能不是第一个),否则会耗尽电池寿命。

3)返回给您的第一个位置通常是最后一个缓存的位置,手机会以与之前修复时相同(可能很高)的精度报告此位置。因此,您可能会得到一个声称精确到 10 米的修复程序,但实际上是昨天在您距离当前位置数英里时收到的。座右铭是不要忘记检查时间戳 - 这会告诉您实际收到位置修复的时间。这是一个如何检查时间戳的示例

希望有帮助。

于 2010-03-16T12:40:18.340 回答
5

您正在寻找“CoreLocation”API。

这是一个教程

于 2010-03-16T12:32:37.357 回答
2

CLLocationManager上的这个页面有五个源代码示例

于 2010-03-16T12:32:52.467 回答
1

下载此示例,它将显示您当前的位置

于 2011-08-29T09:48:22.490 回答
0

如果您只需要获取设备的当前位置,则直接使用 Core Location 需要大量代码,因为您必须处理延迟,直到设备的 GPS 准确定位当前位置,这需要几秒钟的时间。(CLLocationManager API 似乎是为需要持续位置更新的应用程序构建的,例如逐向 GPS 导航应用程序。)

我建议您不要直接使用 CLLocationManager,而是考虑使用开源组件,例如 INTULocationManager,它将为您处理所有这些工作,并使请求设备当前位置的一个或多个离散请求变得非常简单。

于 2014-03-29T18:59:50.957 回答
0

完整的代码在下面

1 拖动地图导入框架给委托

在此代码的最后一行 self.yourmapreferencename.setRegion ...

//这里所有代码

导入 UIKit 导入 MapKit 导入 CoreLocation 类 ViewController: UIViewController, CLLocationManagerDelegate {

@IBOutlet weak var mapView: MKMapView!
var locationManager : CLLocationManager!

override func viewDidLoad() {
    super.viewDidLoad()

    if CLLocationManager.locationServicesEnabled()
    {
        locationManager = CLLocationManager()
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestAlwaysAuthorization()
        locationManager.startUpdatingLocation()

    }

}

func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
{

    let location = locations.last! as CLLocation
    let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
    let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))

    self.mapView.setRegion(region, animated: true)
}

}

于 2016-02-17T05:23:03.147 回答
-2

真正的解决方案可以在这里找到。Z5 Concepts iOS 开发代码片段

它只需要一点编码。

- (IBAction)directions1_click:(id)sender
{
    NSString* address = @"118 Your Address., City, State, ZIPCODE";
    NSString* currentLocation = @"Current Location";
    NSString* url = [NSStringstringWithFormat: @"http://maps.google.com/maps?saddr=%@&daddr=%@",[currentLocation stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],[address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    UIApplication *app = [UIApplicationsharedApplication];
    [app openURL: [NSURL URLWithString: url]];
}
于 2012-06-02T17:12:55.790 回答