Tôi có MKMapView
có số UISearchBar
ở trên cùng và tôi muốn người dùng có thể nhập địa chỉ và tìm địa chỉ đó và thả ghim vào địa chỉ đó. Những gì tôi không biết là làm thế nào để biến chuỗi địa chỉ thành kinh độ và vĩ độ, vì vậy tôi có thể làm cho một đối tượng CLLocation
. Có ai biết làm thế nào tôi có thể làm điều này?Cách nhận toạ độ vĩ độ và vị trí dài từ chuỗi địa chỉ
7
A
Trả lời
16
Bạn có thể tìm thấy câu trả lời trong câu hỏi này.
iOS - MKMapView place annotation by using address instead of lat/long Theo người dùng 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];
}
}
];
Một giải pháp rất đơn giản. Nhưng chỉ áp dụng trên iOS5.1 trở lên.
1
Đối 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)
}
})
2
tôi đã sử dụng một cách tiếp cận tương tự như Vijay, nhưng phải điều chỉnh một dòng mã. region.center = placemark.region.center
không hoạt động đối với tôi. Có lẽ mã của tôi giúp một ai đó cũng như:
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)
}
})
0
func geoCodeUsingAddress(address: NSString) -> CLLocationCoordinate2D {
var latitude: Double = 0
var longitude: Double = 0
let addressstr : NSString = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=\(address)" as NSString
let urlStr = addressstr.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
let searchURL: NSURL = NSURL(string: urlStr! as String)!
do {
let newdata = try Data(contentsOf: searchURL as URL)
if let responseDictionary = try JSONSerialization.jsonObject(with: newdata, options: []) as? NSDictionary {
print(responseDictionary)
let array = responseDictionary.object(forKey: "results") as! NSArray
let dic = array[0] as! NSDictionary
let locationDic = (dic.object(forKey: "geometry") as! NSDictionary).object(forKey: "location") as! NSDictionary
latitude = locationDic.object(forKey: "lat") as! Double
longitude = locationDic.object(forKey: "lng") as! Double
} catch {
}
}
var center = CLLocationCoordinate2D()
center.latitude = latitude
center.longitude = longitude
return center
}
+0
điều này là dành cho bản đồ google (câu trả lời trong nhanh nhất 3) –
Các vấn đề liên quan
- 1. Nhận Kinh độ Vĩ độ từ một địa chỉ C#
- 2. Mục tiêu c cách nhận dấu vị trí của các toạ độ đã cho
- 3. API vị trí địa lý của Google - Sử dụng kinh độ và vĩ độ để nhận địa chỉ trong hộp văn bản?
- 4. Thuật toán để tính toán vị trí gần nhất dựa trên kinh độ và vĩ độ
- 5. Nhận vị trí của người dùng (vĩ độ, kinh độ) bằng Bing hoặc API Google Maps
- 6. Lấy vĩ độ và kinh độ từ địa chỉ mà không cần sử dụng Google API
- 7. Cách xác định vị trí vĩ độ và kinh độ với Plugin Bản đồ jVector
- 8. iOS Tìm vị trí (Vĩ độ, kinh độ) từ Mã bưu điện
- 9. nhận vĩ độ & kinh độ theo địa chỉ được cung cấp cho tờ rơi
- 10. Cách tìm khoảng cách từ vĩ độ và kinh độ của hai địa điểm?
- 11. Tạo đối tượng Vị trí trong Android với các giá trị vĩ độ và kinh độ
- 12. Khoảng cách trả về giữa hai vị trí trong SQL Server 2008 sử dụng vĩ độ và kinh độ
- 13. Chuyển đổi độ dài/vĩ độ thành các tọa độ X/Y
- 14. Thuật toán để tìm tất cả các vị trí Kinh độ của Vĩ độ trong một khoảng cách nhất định từ vị trí Lat Lng đã cho
- 15. Kiểm tra xem một địa chỉ có vĩ độ và kinh độ nằm trong một shapefile
- 16. Tính toán vòng bi giữa hai vị trí (vĩ độ, dài)
- 17. Trích xuất toạ độ X và Y khỏi chuỗi
- 18. Cách lấy kinh độ và vĩ độ cho địa chỉ đường phố theo chương trình (và hợp pháp)
- 19. String để CLLocation vĩ độ và kinh độ
- 20. API Bản đồ Bing API - nhận vị trí từ địa chỉ
- 21. Tìm các vĩ độ và kinh độ gần nhất
- 22. Vĩ độ/Kinh độ Khoảng cách
- 23. Chuyển đổi độ dài/vĩ độ thành các tọa độ X/Y
- 24. Nhận vĩ độ và kinh độ tự động bằng cách sử dụng php, API
- 25. Vĩ độ/Kinh độ và mét
- 26. tính toán Độ dài và Độ dài từ Vòng bi và Khoảng cách
- 27. Làm cách nào để chuyển đổi cặp vĩ độ/kinh độ thành loại địa lý PostGIS?
- 28. Loại dữ liệu nào cho vĩ độ và kinh độ?
- 29. Hướng đông về kinh độ vĩ độ
- 30. Lập chỉ mục chính xác các giá trị vĩ độ và kinh độ trong Lucene
này không giúp đỡ, vì dữ liệu ông lấy có tọa độ cho các địa chỉ. Tôi cần một cách để tìm tọa độ cho địa chỉ, khi người dùng tìm kiếm địa chỉ. –