2012-03-05 33 views

Trả lời

3

Tôi đã làm một cái gì đó như thế này để đạt được nhiệm vụ này:

trong file header (.h)

@interface RDViewController : UIViewController{ 

    UIImage *image ; 
} 
@property (strong, nonatomic) IBOutlet MKMapView *mapView; 

@property (strong, nonatomic) IBOutlet UIActivityIndicatorView *activityIndicator; 

@property (strong, nonatomic) IBOutlet UIImageView *imageView; 

trong file .m

@implementation RDViewController 

@synthesize mapView; 

@synthesize activityIndicator; 

@synthesize imageView; 


- (void)viewDidLoad 

{ 

NSURL *url = [NSURL URLWithString: 
        @"http://radar.weather.gov/ridge/Conus/RadarImg/latest_radaronly.gif"]; 

    MapOverlay * mapOverlay = [[MapOverlay alloc] initWithImageData:[NSData dataWithContentsOfURL:url] withLowerLeftCoordinate:CLLocationCoordinate2DMake(21.652538062803, -127.620375523875420) withUpperRightCoordinate:CLLocationCoordinate2DMake(50.406626367301044, -66.517937876818)]; 

     //<LatLonBox><north>50.406626367301044</north><south>21.652538062803</south><east>-66.517937876818</east><west>-127.620375523875420</west></LatLonBox> 

    [mapView addOverlay:mapOverlay]; 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
} 

- (void)viewDidUnload 
{ 
    [self setImageView:nil]; 
    [self setMapView:nil]; 
    [self setActivityIndicator:nil]; 
    [super viewDidUnload]; 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 
    return YES; 
} 


#pragma Mark - MKOverlayDelgateMethods 

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay { 

    MapOverlay *mapOverlay = overlay; 
    MapOverlayView *mapOverlayView = [[MapOverlayView alloc] initWithOverlay:mapOverlay]; 
    return mapOverlayView; 

} 

enter image description here enter image description here

+0

Ở đâu bạn nhận được phương pháp này từ tôi không thể nhìn thấy nó trong tài liệu --- MapOverlay * mapOverlay = [[MapOverlay alloc] initWithImageData: [Dữ liệu NSDataWithContentsOfURL: url] withLowerLeftCoordinate: CLLocationCoordinate2DMake (21.652538062803, -127.620375523875420) withUpperRightCoordinate: CLLocationCoordinate2DMake (50.406626367301044, -66.517937876818)]; –

+0

Bạn phải tạo Lớp tùy chỉnh chứa các phương thức này Vui lòng kiểm tra những hình ảnh của lớp đó. –

+0

@iosRider Bạn có thể xem câu hỏi của tôi liên quan đến gifs động trong mkoverlays http://stackoverflow.com/questions/20558591/animated-gif-in-an-mkmapview-overlay-using-mkoverlayrenderer – wigging

2

Bạn cần điều tra lớp phủ MapKit (MKOverlay). Trong trường hợp của bạn, bạn sẽ tạo một MKPolygon.

Bạn sẽ cần phải tạo một mảng các MKMapPoints từ dữ liệu radar thời tiết của mình, sau đó tạo một MKPolygon từ các điểm này và thêm nó làm bản đồ của bạn dưới dạng lớp phủ.

Có một dự án mẫu của Apple có tên là HazardMap làm điều gì đó rất giống với những gì bạn đang cố gắng làm, ngoại trừ trong trường hợp này nó đang sử dụng dữ liệu động đất.

Ngoài ra, hãy xem bản trình bày WWWDC 2011 "Hiển thị thông tin địa lý với MapKit". Khoảng mốc 30 phút, họ bắt đầu nói về Lớp phủ.

Hy vọng điều này sẽ hữu ích.

+0

có Tôi đã kiểm tra HazardMap nhưng nó không cung cấp thông tin thời tiết và nó lấy một số tập tin đó là một số điều khác nhau mà MyRequirement.Thanks cho phản ứng nhưng không có bất kỳ api cho this.Thanks một lần nữa. –

+1

Tôi giả định rằng bạn có quyền truy cập vào dữ liệu thời tiết nguồn. Bạn có thể thử http://www.programmableweb.com để tìm nguồn dữ liệu bạn yêu cầu. –

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