Video: Hướng dẫn thay đổi Appstore quốc gia khác chỉ với vài click! 2025
Nếu bạn muốn ứng dụng iOS hiển thị vị trí của người dùng liên quan đến vị trí của họ? Lý tưởng khi bạn đến New York (hoặc ở bất cứ nơi nào), bạn sẽ thấy một bản đồ tập trung vào vị trí của bạn như trái ngược với toàn bộ Hoa Kỳ. Trước tiên, bạn cần phải xem cách bạn căn giữa bản đồ. Để làm điều đó, bạn cần thêm khai báo phương thức setInitialRegion vào MapController. m.
Trước tiên, hãy cập nhật phần mở rộng lớp bằng cách thêm đoạn mã đậm trong Liệt kê 17-3 vào phần mở rộng lớp trong MapController. m.
@interface MapController () @ tài sản (yếu, nonatomic) IBOutlet MKMapView * mapView; - (IBAction) mapType: (id) người gửi; - (void) setInitialRegion; -d
Bởi vì bộ điều khiển Map sẽ lấy dữ liệu từ đối tượng, vì nó cần, bạn phải cập nhật thực hiện để nhập lớp. Thêm chữ in đậm vào MapController. m.
#import "MapController. H" #import "AppDelegate. H" #import "Chuyến đi h."
Cuối cùng, thêm phương thức setInitialRegion vào MapController. m.
- (void) setInitialRegion {AppDelegate * appDelegate = [UIApplication sharedApplication] delegate]; Khu vực MKCoordinateRegion; CLLocationCoordinate2D initialCoordinate = [appDelegate. chuyến đi đíchGiám sát]; khu vực. trung tâm. vĩ độ = ban đầu tương ứng. vĩ độ; khu vực. trung tâm. kinh độ = initialCoordinate. kinh độ; khu vực. span. vĩ độDelta =. 05; khu vực. span. kinh độDelta =. 05; [tự. mapView setRegion: khu vực hoạt hình: NO];}
Sau đó bạn cần phải cập nhật viewDidLoad để sử dụng phương pháp này. Thêm mã được in đậm trong Liệt kê 17-6 để xemDidLoad trong MapController. m để gửi thông báo này.
- (void) viewDidLoad {[super viewDidLoad]; tự. mapView. delegate = self; tự. mapView. showsUserLocation = CÓ; [tự setInitialRegion]; }
Nếu bạn chạy ngay bây giờ, bạn sẽ không thấy chú thích … ít nhất là chưa.
Thiết lập vùng là cách bạn căn giữa bản đồ và thiết lập mức độ phóng to. Bạn hoàn thành tất cả những điều này với câu lệnh sau:
[self. mapView setRegion: khu vực hoạt hình: NO];
Vùng là thuộc tính Chế độ xem bản đồ xác định bốn phần thông tin:
-
khu vực. trung tâm. vĩ độ: Chỉ định vĩ độ của trung tâm bản đồ.
-
khu vực. trung tâm. kinh độ: Chỉ định kinh độ của trung tâm bản đồ.
Ví dụ: trung tâm của bản đồ sẽ là New York nếu bạn đặt các giá trị đó dưới dạng
khu vực. trung tâm. vĩ độ = 40. 712756; khu vực. trung tâm. kinh độ = -74. 006047;
-
khu vực. span. vĩ độDelta: Chỉ định khoảng cách từ bắc xuống nam (theo vĩ độ) để hiển thị trên bản đồ.Một mức độ vĩ độ khoảng 111 km (69 dặm). Một vùng. span. vĩ độDelta của 0.0036 sẽ chỉ định một khoảng cách bắc-nam trên bản đồ khoảng một phần tư dặm. Các vĩ độ ở phía Bắc đường xích đạo có giá trị dương, trong khi vĩ độ ở phía nam đường xích đạo có giá trị âm.
-
khu vực. span. longiudeDelta: Chỉ định khoảng cách từ đông sang tây (theo chiều dọc) để hiển thị trên bản đồ. Thật không may, đối với số dặm trong một mức độ kinh độ khác nhau dựa trên các vĩ độ. Ví dụ, một mức độ kinh độ là khoảng 69 dặm tại đường xích đạo, nhưng co lại đến 0 dặm ở hai cực.
Kinh độ về phía đông của kinh tuyến không (theo quy ước quốc tế, kinh tuyến số không hoặc chính đi qua Đài quan sát Hoàng gia, Greenwich, ở phía đông London) có giá trị dương và kinh độ tây của kinh tuyến số không có giá trị âm.
Mặc dù giá trị span cung cấp giá trị thu phóng cho bản đồ, khu vực thực tế mà bạn thấy hiển thị có thể không bằng khoảng thời gian mà bạn chỉ định vì bản đồ sẽ đi đến mức thu phóng phù hợp nhất với khu vực đó bộ.
Điều này cũng có nghĩa là ngay cả khi bạn chỉ cần thay đổi tọa độ trung tâm trong bản đồ, mức độ thu phóng có thể thay đổi do khoảng cách được biểu diễn bởi một khoảng cụ thể có thể thay đổi ở các vĩ độ và kinh độ khác nhau. Để giải thích cho điều đó, những nhà phát triển thông minh của Apple bao gồm một thuộc tính mà bạn có thể thiết lập để thay đổi tọa độ trung tâm mà không thay đổi mức độ thu phóng:
@ tài sản (không có hệ thống) CLLocationCoordinate2D centerCoordinate
Khi bạn thay đổi giá trị của thuộc tính này bằng một CLLocationCoordinate2D mới, bản đồ được căn giữa vào tọa độ mới, và các giá trị span được cập nhật để duy trì mức độ phóng hiện tại.
Loại CLLocationCoordinate2D đó là cái gì bạn sẽ sử dụng rất nhiều. Loại CLLocationCoordinate2D là một cấu trúc có chứa một tọa độ địa lý sử dụng khung tham chiếu WGS 84 (hệ tọa độ tham chiếu được sử dụng bởi Hệ thống định vị toàn cầu):
typedef struct {CLLocationDegrees latitude; CLLocationDegrees kinh độ;} CLLocationCoordinate2D;
Đây là một lời giải thích nhỏ:
-
vĩ độ: vĩ độ theo độ. Đây là giá trị bạn đặt trong mã bạn vừa nhập (vùng trung tâm. Vĩ độ = vĩ độ;). Giá trị dương biểu thị các vĩ độ ở phía bắc đường xích đạo. Các giá trị âm cho thấy các vĩ độ ở phía nam đường xích đạo.
-
kinh độ: Kinh độ theo độ. Đây là giá trị bạn đặt trong mã mà bạn vừa nhập vào (vùng trung tâm; longitude = longitude;). Các phép đo liên quan đến kinh tuyến số không, với các giá trị tích cực kéo dài về phía đông của kinh tuyến và các giá trị âm trải dài về phía tây của kinh tuyến.
CLLocationDegrees đại diện cho một giá trị vĩ độ hoặc kinh độ được chỉ định theo độ và là một đôi.
Để căn giữa bản đồ hiển thị trên New York, bạn gửi thông báo setInitialRegion (mã bạn vừa nhập) khi chế độ xem được tải trong phương thức viewDidLoad:.
