2011-10-21 14 views
10

Harita görünümlerim düzgün çalışıyor, ancak haritaya yerleştirilen pimin ABD başlığı var. Bu başlığı nasıl değiştirebilirim?MKPlacemark pim başlığı

MKCoordinateRegion thisRegion = {{0.0,0.0}, {0.0,0.0}}; 

     thisRegion.center.latitude = 22.569722; 
     thisRegion.center.longitude = 88.369722; 

     CLLocationCoordinate2D coordinate; 
     coordinate.latitude = 22.569722; 
     coordinate.longitude = 88.369722; 

     thisRegion.center = coordinate; 

     MKPlacemark *mPlacemark = [[[MKPlacemark alloc] initWithCoordinate:coordinate addressDictionary:nil] autorelease]; 

     [mapView addAnnotation:mPlacemark]; 
     [mapView setRegion:thisRegion animated:YES]; 

cevap

13

Oldukça eski bir soru, ama belki aynı sorunu üzerine başkasının Tökezlemeler (benim yaptığım gibi):

haritanın ek açıklamalarına bir MKPlacemark eklemeyin; yerine MKPointAnnotation kullanın. Bu sınıf, salt okunur olmayan başlık ve altyazı özelliklerine sahiptir. Onları ayarladığınızda, haritadaki ek açıklama buna göre güncellenir - ve muhtemelen bu sizin istediğiniz gibi.

tahsis hatlarını yenilemek, kodunuzda MKPointAnnotation kullanabilir ve bu kodla MKPlacemark eklemek için:

MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
annotation.coordinate = coordinate; 
annotation.title = NSLocalizedString(@"Dropped Pin", 
            @"Title of a dropped pin in a map"); 
[mapView addAnnotation:annotation]; 

Sen de sonraki bir zamanda başlık ve alt başlık özelliklerini ayarlayabilirsiniz. Örneğin, bir eşzamansız adres sorgunuz varsa, adres kullanılabilir olduğunda, altyazıyı açıklama notunun adresine ayarlayabilirsiniz.

5

aşağıdaki

-(void) locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 

CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 

// Apple recommendation - if location is older than 30s ignore 
// Comment out below during development 
/* if (fabs([newLocation.timestamp timeIntervalSinceDate:[NSDate date]]) > 30) { 
    NSLog(@"timestamp"); 
    return; 
}*/ 

CLLocation *coord = [[CLLocation alloc] initWithLatitude:locationManager.location.coordinate.latitude longitude:locationManager.location.coordinate.longitude];        
[geocoder reverseGeocodeLocation:coord completionHandler:^(NSArray *placemarks, NSError *error) { 

    if (error) { 
     NSLog(@"Geocode failed with error"); 
    } 

    // check for returned placemarks 
    if (placemarks && placemarks.count > 0) { 
     CLPlacemark *topresult = [placemarks objectAtIndex:0]; 
     MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init]; 
     annotation.coordinate = locationManager.location.coordinate; 
     annotation.title = NSLocalizedString(@"You are here", @"Title"); 
     annotation.subtitle = [NSString stringWithFormat:@"%@, %@", [topresult subAdministrativeArea], [topresult locality]]; 
     [self.mapView addAnnotation:annotation]; 
    } 
}]; 
} 
IOS 5.1 CLGeocoder kullanarak bir harita üzerinde bir açıklama yerleştirme işlemi gösterilmektedir kod