2012-03-05 12 views

Odpowiedz

3

Zrobiłem coś takiego dla realizacji tego zadania:

w pliku nagłówka (.h)

@interface RDViewController : UIViewController{ 

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

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

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

w .m pliku

@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

Skąd wziąłeś tę metodę od Nie widzę jej w dokumentacji ---> MapOverlay * mapOverlay = [[Przypisanie MapOverlay] initWithImageData: [NSData dataWithContentsOfURL: url] withLowerLeftCoordinate: CLLocationCoordinate2DMake (21.652538062803, -127.620375523875420) withUpperRightCoordinate: CLLocationCoordinate2DMake (50,406626367301044, -66,517937876818)]; –

+0

Musisz utworzyć niestandardową klasę, która zawiera te metody. Sprawdź te obrazy tej klasy. –

+0

@iosRider Czy możesz sprawdzić moje pytanie związane z animowanymi gifami w mkoverlays http://stackoverflow.com/questions/20558591/animated-gi--an-mkmapview-overlay-using-mkoverlayrenderer – wigging

2

Potrzebujesz sprawdzić nakładki MapKit (MKOverlay). W twoim przypadku będziesz tworzyć MKPolygon.

Będziesz musiał utworzyć tablicę punktów MKMap z danych pogodowych, a następnie utworzyć MKPolygon z tych punktów i dodać mapę jako nakładkę.

Istnieje przykładowy projekt Apple o nazwie HazardMap, który robi coś bardzo podobnego do tego, co próbujesz zrobić, z tym wyjątkiem, że używa danych o trzęsieniu ziemi.

Zobacz także prezentację WWWDC 2011 "Wizualizacja informacji geograficznie za pomocą MapKit". Około 30-minutowego znaku zaczynają mówić o nakładkach.

Mam nadzieję, że to pomoże.

+0

Tak Sprawdziłem HazardMap, ale nie dostarcza ona informacji o pogodzie i pobiera pewne pliki, co jest czymś innym niż MyRequirement. Dziękuję za odpowiedź, ale mam na to api. Dziękuję raz jeszcze. –

+1

Założono, że masz dostęp do źródłowych danych pogodowych. Możesz wypróbować http://www.programmableweb.com, aby znaleźć źródło wymaganych danych. –

Powiązane problemy