上部にMKMapView
がUISearchBar
あり、ユーザーがアドレスを入力して、そのアドレスを見つけてピンをドロップできるようにしたいと考えています。私が知らないのは、住所の文字列を経度と緯度に変換する方法です。これにより、CLLocation
オブジェクトを作成できます。誰も私がこれを行う方法を知っていますか?
質問する
16183 次
4 に答える
18
この質問で答えが見つかるかもしれません。
iOS - MKMapView は、lat / long By User Romes の代わりに住所を使用して注釈を配置します。
NSString *location = @"some address, state, and zip";
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:location
completionHandler:^(NSArray* placemarks, NSError* error){
if (placemarks && placemarks.count > 0) {
CLPlacemark *topResult = [placemarks objectAtIndex:0];
MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult];
MKCoordinateRegion region = self.mapView.region;
region.center = placemark.region.center;
region.span.longitudeDelta /= 8.0;
region.span.latitudeDelta /= 8.0;
[self.mapView setRegion:region animated:YES];
[self.mapView addAnnotation:placemark];
}
}
];
非常に簡単な解決策。ただし、iOS5.1 以降にのみ適用されます。
于 2014-08-01T10:10:31.607 に答える
3
Vijay と同様のアプローチを使用しましたが、1 行のコードを調整する必要がありました。region.center = placemark.region.center
私にはうまくいきませんでした。多分私のコードも誰かを助けるでしょう:
let location: String = "1 Infinite Loop, CA, USA"
let geocoder: CLGeocoder = CLGeocoder()
geocoder.geocodeAddressString(location,completionHandler: {(placemarks: [CLPlacemark]?, error: NSError?) -> Void in
if (placemarks?.count > 0) {
let topResult: CLPlacemark = (placemarks?[0])!
let placemark: MKPlacemark = MKPlacemark(placemark: topResult)
var region: MKCoordinateRegion = self.mapView.region
region.center.latitude = (placemark.location?.coordinate.latitude)!
region.center.longitude = (placemark.location?.coordinate.longitude)!
region.span = MKCoordinateSpanMake(0.5, 0.5)
self.mapView.setRegion(region, animated: true)
self.mapView.addAnnotation(placemark)
}
})
于 2016-03-12T20:59:02.180 に答える
1
Swift2の場合
var location: String = "some address, state, and zip"
var geocoder: CLGeocoder = CLGeocoder()
geocoder.geocodeAddressString(location,completionHandler: {(placemarks: [CLPlacemark]?, error: NSError?) -> Void in
if (placemarks?.count > 0) {
var topResult: CLPlacemark = (placemarks?[0])!
var placemark: MKPlacemark = MKPlacemark(placemark: topResult)
var region: MKCoordinateRegion = self.mapView.region
region.center = placemark.region.center
region.span.longitudeDelta /= 8.0
region.span.latitudeDelta /= 8.0
self.mapView.setRegion(region, animated: true)
self.mapView.addAnnotation(placemark)
}
})
于 2015-12-16T05:26:52.363 に答える