Có, bạn có thể có chế độ xem tùy chỉnh cho vị trí của người dùng. Không may, khó thực hiện hơn là vì mặc dù yêu cầu documentation for the viewForAnnotation delegate method là bạn chỉ có thể cung cấp chế độ xem của riêng mình nếu lớp chú thích là MKUserLocation
, chế độ xem tùy chỉnh sau đó không tiếp tục di chuyển với vị trí của người dùng. Trên thực tế, khi chế độ xem tùy chỉnh được trả lại cho MKUserLocation
, chế độ xem bản đồ ngừng hoàn toàn cập nhật vị trí của người dùng (chế độ xem đại biểu của didUpdateUserLocation
không còn kích hoạt) nữa. Tôi tin rằng đây là một lỗi.
Một cách giải quyết là sử dụng CLLocationManager
và chú thích tùy chỉnh ...
Hãy chắc chắn rằng showsUserLocation
là NO
hoặc đánh dấu trên bản đồ.
Khai báo các thuộc tính cho CLLocationManager
và chú thích tùy chỉnh bằng cách sử dụng lớp tùy chỉnh triển khai giao thức MKAnnotation
(hoặc bạn chỉ có thể sử dụng lớp chung MKPointAnnotation
).
Trong viewDidLoad
hoặc một số địa điểm thích hợp khác, hãy tạo CLLocationManager
, đặt delegate
và gọi startUpdatingLocation
.
Trong location manager's didUpdateToLocation
delegate method (không giao diện bản đồ của phương pháp didUpdateUserLocation
đại biểu), tạo hoặc cập nhật chú thích tùy chỉnh của bạn:
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
if (myUserLocAnnot == nil)
{
self.myUserLocAnnot = [[[MyUserLocClass alloc] init] autorelease];
//remove the autorelease if using ARC
myUserLocAnnot.title = @"You are here";
myUserLocAnnot.coordinate = newLocation.coordinate;
[mapView addAnnotation:myUserLocAnnot];
}
else
{
myUserLocAnnot.coordinate = newLocation.coordinate;
}
}
Cuối cùng, trong phương pháp đại biểu quan điểm bản đồ của viewForAnnotation
, bạn sẽ quay trở lại một cái nhìn tùy chỉnh chú thích nếu chú thích là chú thích vị trí người dùng tùy chỉnh của bạn.
phải đối mặt với cùng một vấn đề, có thể chúng tôi có thể gây ra lỗi cho quả táo – darshansonde
Cảm ơn Anna, Hiện tại, nó đang hoạt động. Thậm chí tôi nghi ngờ có một lỗi trong mapview không hiển thị chế độ xem chú thích tùy chỉnh của chúng tôi cho việc phân bổ lại khi chúng tôi đặt nó. – nkd
Nhưng một vấn đề khác mà tôi phải đối mặt ở đây là, ngay khi bắt đầu cập nhật vị trí, tôi nhận được cuộc gọi trở lại locationManager: didUpdateToLocation: phương thức fromLocation nơi tôi tạo chú thích và thêm nó vào bản đồ, nhưng bản đồ không hiển thị chế độ xem tùy chỉnh của tôi mặc dù tôi đang trở về chế độ xem tùy chỉnh. Nếu tôi tắt vị trí và vị trí, nó hoạt động. Có vấn đề gì ở đây không? – nkd