Reputation: 1793
Hey, im trying to add an annotation on my map. How can i do it?
Heres my code:
- (void)abreMapa:(NSString *)endereco {
NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv",
[endereco stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];
NSArray *listItems = [locationString componentsSeparatedByString:@","];
double latitude = 0.0;
double longitude = 0.0;
if([listItems count] >= 4 && [[listItems objectAtIndex:0] isEqualToString:@"200"]) {
latitude = [[listItems objectAtIndex:2] doubleValue];
longitude = [[listItems objectAtIndex:3] doubleValue];
}
else {
//Show error
}
CLLocationCoordinate2D coordinate;
coordinate.latitude = latitude;
coordinate.longitude = longitude;
myMap.region = MKCoordinateRegionMakeWithDistance(coordinate, 2000, 2000);
[self.view addSubview:mapa];
}
Thanks!
Upvotes: 7
Views: 33121
Reputation: 4901
Try this
Pin *selected = [[Pin alloc] init];
for(i=0; i<[[newxml dataarray] count]; i++)
{
gapi = [newxml.dataarray objectAtIndex:i];
MKCoordinateRegion region ; // = { {0.0, 0.0 }, { 0.0, 0.0 } };
region.center. latitude = [gapi.lat floatValue];
region.center. longitude = [gapi.lng floatValue];
region.span.longitudeDelta = 0.05f;
region.span.latitudeDelta = 0.05f;
[self.mapview setRegion:region animated:YES];
Pin* myAnnotation1=[[Pin alloc] init];
myAnnotation1.coordinate=region.center;;
myAnnotation1.title=gapi.name;
myAnnotation1.itemIndex = i;
myAnnotation1.subtitle=gapi.address;
[self.mapview addAnnotation:myAnnotation1];
if (j == i)
{
selected = myAnnotation1;
}
if(k==123)
{
[self.mapview selectAnnotation:selected animated:NO];
}
}
Upvotes: 0
Reputation: 3655
Since MKAnnotation is a protocol, you'll have to define your own class that implements the protocol. For example,
@interface SPAnnotation : NSObject <MKAnnotation> {
CLLocationCoordinate2D coordinate;
}
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate;
If you have a latitude, longitude for the location you'd like to map:
SPAnnotation *annotation = [[Annotation alloc] initWithCoordinate:CLLocationCoordinate2DMake(latitude, longitude)];
[myMap addAnnotation:annotation];
Upvotes: 16
Reputation: 5658
You'll also have to code up an annotation class that adopts the MKAnnotation protocol. e.g.:
@interface MyMapAnnotation : NSObject <MKAnnotation> {
...
}
Upvotes: 0