web-dev-qa-db-ja.com

Swiftで住所をプロットし、住所を経度と緯度の座標に変換するにはどうすればよいですか?

Objective-Cでは、このコードはうまく機能して住所をプロットし、経度と緯度の座標を見つけます。

     NSString *address = @"1 Infinite Loop, CA, USA";
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:address 
             completionHandler:^(NSArray* placemarks, NSError* error){
                 // Check for returned placemarks
                 if (placemarks && placemarks.count > 0) {
                     CLPlacemark *topResult = [placemarks objectAtIndex:0];
                     // Create a MLPlacemark and add it to the map view
                     MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult];
                     [self.mapView addAnnotation:placemark];
                     [placemark release];
                 }
                 [geocoder release];
             }];

私はこれをSwiftで行う方法について何日も探してきました?!誰かが私を正しい方向に向けることができますか?これが機能するためにユーザーがインターネット接続を必要とするかどうかを説明できますか?これらの質問が少し基本的に聞こえる場合は申し訳ありませんが、私はこれにかなり慣れており、毎日学習しています。

このコードを使用する必要があることを理解していますが、コードを実装する方法が見つかりません

func geocodeAddressString(_ addressString: String!,
    completionHandler completionHandler: CLGeocodeCompletionHandler!)
16
agf119105

のようなものを試してください

var address = "1 Infinite Loop, CA, USA"
var geocoder = CLGeocoder()
geocoder.geocodeAddressString(address, {(placemarks: [AnyObject]!, error: NSError!) -> Void in
    if let placemark = placemarks?[0] as? CLPlacemark {
        self.mapView.addAnnotation(MKPlacemark(placemark: placemark))
    }
})
27
kviksilver

XCode 9&Swift 3:

import CoreLocation

let address = "1 Infinite Loop, CA, USA"
let geocoder = CLGeocoder()

geocoder.geocodeAddressString(address, completionHandler: {(placemarks, error) -> Void in
   if((error) != nil){
      print("Error", error)
   }
   if let placemark = placemarks?.first {
      let coordinates:CLLocationCoordinate2D = placemark.location!.coordinate
      }
    })
38
realtimez
var address = "1 Infinite Loop, CA, USA"
var geocoder = CLGeocoder()    

geocoder.geocodeAddressString(address) {
    if let placemarks = $0 {
       println(placemarks)
    } else {
       println($1)
    }
}
3
MirekE