2012-07-24 41 views
8

Tôi gặp sự cố với số MKAnnotationView khi MKUserTrackingModeFollowWithHeading được bật trên MKMapView.Cách đặt trung tâm xoay của MKAnnotationView

Tôi định vị hình ảnh của mình bằng thuộc tính centerOffset của MKAnnotationView. Xác định tọa độ của của pin mũi tương đối so với hệ tọa độ ở trung tâm của hình ảnh có phần phản intutive, nhưng tôi đã đưa ra công thức sau:

annotationView.centerOffset = CGPointMake(imageWidth/2.0 - tipXCoordinate, imageHeight/2.0 - tipYCordinate); 

này hoạt động tốt cho phóng to bản đồ trong và ngoài . Các mẹo của các chân giữ vị trí tương đối của chúng trên bản đồ.

Tuy nhiên, khi tôi bật MKUserTrackingModeFollowWithHeading, nó sẽ không hoạt động nữa. Các Ghim xoay quanh tâm của hình ảnh, thay vì đầu. Vì vậy, khi bản đồ quay, các mẹo sẽ không trỏ đến các vị trí mà chúng được cho là chú thích.

Tôi đã chơi xung quanh một chút với các thuộc tính framecenter của MKAnnotationView, nhưng tôi cảm thấy, chúng không ảnh hưởng đến sự sắp xếp của các chân nào.

Điều thú vị là, MKPinAnnotationView dường như không sử dụng centerOffset chút nào, nhưng thay vào đó, thay đổi frame. Tuy nhiên, tôi không thể tái tạo điều này. Thay đổi frame chế độ xem tùy chỉnh của tôi không hề di chuyển.

Thanks cho bất kỳ tài liệu chuyên sâu có thể cung cấp :-)

Giải pháp:

Không sử dụng centerOffset! Sử dụng annotationView.layer.anchorPoint để thay thế. Hệ thống phối hợp của điểm achor cũng đẹp hơn nhiều. Tọa độ dao động từ 0,0 (trên/trái) đến 1.0 (dưới/phải) của hình chữ nhật hình ảnh:

annotationView.layer.anchorPoint = CGPointMake(tipXCoordinate/imageWidth, tipYCordinate/imageHeight); 

Trả lời

12

Một người bạn hỏi tôi để cho bạn biết rằng bạn nên "thử loại này ví dụ":

self.layer.anchorPoint = CGPointMake (0.5f, 1.0f); 
+1

Hãy nói cho bạn bè của bạn, (s) anh ấy là người hùng cá nhân của tôi trong tuần :-) Rất cám ơn! – Chris

Các vấn đề liên quan