2009-08-26 31 views

Trả lời

1

Tôi đã sử dụng ý tưởng từ bài đăng trên blog của người này để thực hiện việc này. Về cơ bản nó liên quan đến việc thêm một cái nhìn minh bạch trên bản đồ. Bản đồ sau đó cho phép bạn chuyển đổi vị trí thành các điểm trên chế độ xem. Hãy cho tôi biết nếu trang web không giúp bạn và tôi có thể thử và tìm hiểu một ví dụ từ mã của tôi.

http://spitzkoff.com/craig/?p=65

6

Con đường tôi đang đọc câu hỏi của bạn là bạn muốn lập trình vẽ đa giác trên bản đồ. Đối với điều này, hãy tham khảo Apple docs on MapKit.

Bạn không cần thêm chế độ xem trong suốt trên bản đồ MapKit (MKMapView). Bạn tạo một đối tượng lớp phủ, trong trường hợp này là MKPolygon. (Trong ví dụ sau, biến map sẽ là MKMapView dụ thuộc sở hữu của bộ điều khiển xem mà bạn đặt mã này trong):

CLLocationCoordinate2D points[4]; 

points[0] = CLLocationCoordinate2DMake(41.000512, -109.050116); 
points[1] = CLLocationCoordinate2DMake(41.002371, -102.052066); 
points[2] = CLLocationCoordinate2DMake(36.993076, -102.041981); 
points[3] = CLLocationCoordinate2DMake(36.99892, -109.045267); 

MKPolygon* poly = [MKPolygon polygonWithCoordinates:points count:4]; 
poly.title = @"Colorado"; 

[map addOverlay:poly]; 

Sau đó, nếu bạn muốn tùy biến giao diện (màu sắc, đột quỵ, vv) của lớp phủ, bạn thực hiện các MKMapViewDelegate giao thức trong bộ điều khiển xem bạn có sở hữu các đối tượng MKMapView và cung cấp một thực hiện mapView:viewForOverlay:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay 
{ 
    if ([overlay isKindOfClass:[MKPolygon class]]) 
    { 
     MKPolygonView* aView = [[[MKPolygonView alloc] initWithPolygon:(MKPolygon*)overlay] autorelease]; 

     aView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:0.2]; 
     aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7]; 
     aView.lineWidth = 3; 

     return aView; 
    } 

    return nil; 
} 

Tất nhiên, luôn nhớ để thực sự gán bản đồ đại biểu của ví dụ cho bộ điều khiển xem của bạn (MKMapViewDelegate), hoặc trong trình tạo giao diện hoặc trong mã (ví dụ: viewDidLoad).

+0

Và, tất nhiên, đối với vòng kết nối, bạn sẽ sử dụng 'MKCircle' thay vì' MKPolygon' – Nate

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