2010-02-23 12 views
17

Tôi muốn sử dụng MKMapView để hiển thị vị trí hiện tại của người dùng bằng cách sử dụng pin màu xanh thở mặc định và tôi muốn ghi lại chuyển động của người dùng cùng một lúc. Có cách nào mà tôi có thể sử dụng quản lý GPS (không chắc chắn nếu đây là một CLLocationManager) MKMapView sử dụng khi chúng tôi kích hoạt nó để hiển thị vị trí người dùng?MKMapView và CLLocationManager

Tôi biết rằng tôi có thể tạo CLLocationManager của riêng mình. Nhưng điều này cảm thấy giống như thêm phí trên vào ứng dụng của tôi và tôi muốn bản đồ và theo dõi của tôi vẫn được đồng bộ hóa.

tôi đã khám phá những ý tưởng sau đây mà không thành công:

  • Sử dụng [MKMapView showUserLocation:YES] và thêm KVO trên các lĩnh vực userLocation. Điều này không làm việc và tôi tự hỏi nếu điều này là do thực tế là trường userLocation chỉ đọc.
  • Sử dụng [MKMapView showUserLocation:YES], tạo MKMapViewDelegate và thêm theo dõi khi chế độ xem chú thích cho vị trí người dùng được yêu cầu. Điều này không có tác dụng vì chế độ xem chú thích dường như chỉ được yêu cầu một lần ???
  • Sử dụng CLLocationManager và cố gắng thêm mã pin màu xanh theo cách thủ công. Thật không may, tôi không tìm thấy pin màu xanh lam trong các loại pin có sẵn, vì vậy tôi đã cố gắng tạo chú thích người dùng theo cách thủ công mà không thành công.

Có ai có ý tưởng làm cách nào để đạt được điều này và vẫn được hưởng lợi từ pin màu xanh hoặc giải pháp duy nhất của tôi để sử dụng CLLocationManager và tạo mã pin của riêng mình?

Trả lời

18

CLLocationManager sử dụng cùng một dữ liệu trên tất cả các phiên bản của nó. MKMapView sử dụng dữ liệu CLLocationManager's nội bộ. Điều đó nói rằng giải pháp để làm những gì bạn muốn làm là để cho MKMapView làm việc riêng của nó liên quan đến showUserLocation:. Đồng thời, tạo một thể hiện của CLLocationManager và đại biểu của nó.

Tin nhắn đại biểu sẽ cung cấp cho bạn vị trí tọa độ GPS của MKMapView's ghim màu xanh lam. Mọi thứ sẽ được đồng bộ với nhau.

+1

Cảm ơn Giao. Tôi đoán rằng "CLLocationManager sử dụng cùng một dữ liệu trên tất cả các trường hợp của nó" là những gì tôi cần nghe;) – Patrice

+1

+1 cho tôi fuzzies mờ – scord

+3

Bạn có chắc chắn rằng CLLocationManager sử dụng cùng một dữ liệu trên tất cả các trường hợp của nó? Nếu đó là trường hợp, Apple sẽ không làm cho nó một singleton như UIApplication? –