2013-07-29 2 views
-2

Я хочу загрузить карту на MKMapView.Загрузить карту Посмотреть на MKMapView

В основном то, что я хочу сделать это,

Я хочу, чтобы загрузить Particular Venue в моей MapView.

Моя база данных содержит много Venues, в соответствии с требованием, я получаю Venue, и я хочу загрузить это Venue в свой mapView.

для, например: Я получил это как Venue:@ "100 Oxford Street, London, W1D 1LL, 020 7636 0933" из базы данных, то я хочу, чтобы загрузить это место в моем MAPview

Спасибо авансовый.

EDIT:

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

    NSString *venue= @"100 Oxford Street, London, W1D 1LL, 020 7636 0933"; 
    [geocoder geocodeAddressString:venue completionHandler:^(NSArray *placemarks, NSError *error) 
    { 
     if ([placemarks count] > 0) 
     { 
      CLPlacemark *placemark = [placemarks objectAtIndex:0]; 
      CLLocation *loc = placemark.location; 
      CLLocationCoordinate2D _venue = loc.coordinate; 
      NSLog(@"_venue:=%f",loc.coordinate); 

      MKPointAnnotation *venueAnnotation = [[MKPointAnnotation alloc]init]; 
      [venueAnnotation setCoordinate:_venue]; 
      [venueAnnotation setTitle:@"Venue"]; 
      [MapVw addAnnotation:venueAnnotation]; 
     } 
    } 
    ]; 
+0

использовать геокодер для получения lat и long from address и добавить аннотацию к вашему MKMapView – Apple

+0

сделал u bind MapVw? – Apple

+0

'@property (слабый, неатомический) IBOutlet MKMapView * MapVw;' также я подключил делегат. – Krunal

ответ

3
- (IBAction)BtnClick:(id)sender { 

NSLog(@"Map "); 


CLGeocoder *geocoder = [[CLGeocoder alloc] init]; 
[geocoder geocodeAddressString:@"100 Oxford Street, London, W1D 1LL, 020 7636 0933" 
      completionHandler:^(NSArray* placemarks, NSError* error) 
{ 
    if (placemarks && placemarks.count > 0) 
    { 
     CLPlacemark *topResult = [placemarks objectAtIndex:0]; 
     MKPlacemark *placemark = [[MKPlacemark alloc] initWithPlacemark:topResult]; 

     [self.MapView addAnnotation:placemark]; 

     CLLocationCoordinate2D _venue = placemark.coordinate; 

     [self.MapView setCenterCoordinate:_venue]; 

     MKCoordinateRegion region = self.MapView.region; 
     region.span.longitudeDelta = 1.0; 
     region.span.latitudeDelta = 1.0; 
     [self.MapView setRegion:region animated:YES]; 

    } 

} 
]; 
} 
+0

[geocoder geocodeAddressString: @ "100 Oxford Street, London, W1D 1LL, 020 7636 0933" completeHandler .... ** Но это дает ошибку ** – Krunal

+0

Вы добавили рамки для Карты? – Apple

+0

i обновил мой код ... я пропустил скобу – Apple

1

шаги:
1. Импорт CoreLocation.framework и MapKit.framework.
2. Используйте CoreLocation класс Geocoder «s метод:

geoCodeAddressString: completionHandler:

NSString *venue= @"100 Oxford Street, London, W1D 1LL, 020 7636 0933"; 
[_geoCoder geocodeAddressString:venue completionHandler:^(NSArray *placemarks, NSError *error) 
    { 
     if ([placemarks count] > 0) 
     { 
     CLPlacemark *placemark = [placemarks objectAtIndex:0]; 
     CLLocation *loc = placemark.location; 
     CLLocationCoordinate2D _venue = loc.coordinate; 
     } 
    }); 
] 

[self performSelector:@selector(createVenueAnnotation) withObject:nil afterDelay:5]; 
UIActivityIndicatorView *activity = [[UIActivityIndicatorView alloc]init]; 
[_mapView addSubview:activity]; 
[activity startAnimating]; 

Шаг 3. Если вы хотите разместить MKPointAnnotation на момент проведения.

- (void)createVenueAnnotation{ 
     [activity stopAnimating]; 
     [activity removeFromSuperview]; 
     MKPointAnnotation *venueAnnotation = [[MKPointAnnotation alloc]init]; 
     [venueAnnotation setCoordinate:_venue]; 
     [venueAnnotation setTitle:@"Venue"]; 
     [_mapView addAnnotation:venueAnnotation]; 
} 

Шаг 4: Настройте карту вокруг места.

// you need to call this function 
- (void)centerMapAroundVenue 
{ 
    MKMapRect rect = MKMapRectNull; 
    MKMapPoint venuePoint = MKMapPointForCoordinate(_venue); 
    rect = MKMapRectUnion(rect, MKMapRectMake(venuePoint .x, venuePoint .y, 0, 0)); 
    MKCoordinateRegion region = MKCoordinateRegionForMapRect(rect); 
    [_mapView setRegion:region animated:YES]; 
} 
+0

См. Мой ** EDIT: ** в вопросе i пробовал это, но ничего не загружал. – Krunal

+0

У вас есть соединение в Интернете? если вы используете симулятор, откройте сафари и проверьте, есть ли у вас подключение к интернету или нет, то же самое для устройства. –

+0

Нет, я тестирую устройство и подключение к Интернету, также работает, мой журнал показывает '_venue: = 51.516139', но карта не загружается. – Krunal

0

Вот простой сценарий:

  • Получить координаты в адреса с помощью GeoCoder
  • Использование Co-ordinatation, добавьте аннотацию к MapView.

сделать нечто подобное, чтобы получить CLlocationCoordinate:

- (CLLocationCoordinate2D) geoCodeUsingAddress:(NSString *)address 
{ 
    double latitude = 0, longitude = 0; 
    NSString *esc_addr = [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr]; 
    NSString *result = [NSString stringWithContentsOfURL:[NSURL URLWithString:req] encoding:NSUTF8StringEncoding error:NULL]; 
    if (result) { 
     NSScanner *scanner = [NSScanner scannerWithString:result]; 
     if ([scanner scanUpToString:@"\"lat\" :" intoString:nil] && [scanner scanString:@"\"lat\" :" intoString:nil]) { 
      [scanner scanDouble:&latitude]; 
      if ([scanner scanUpToString:@"\"lng\" :" intoString:nil] && [scanner scanString:@"\"lng\" :" intoString:nil]) { 
       [scanner scanDouble:&longitude]; 
      } 
     } 
    } 
    CLLocationCoordinate2D center; 
    center.latitude = latitude; 
    center.longitude = longitude; 
    return center; 
} 

Использование центра просто добавить аннотацию к MapView.

[self.mapView addAnnotation:<annotationName>]; 

Plz go through this link Для получения дополнительной информации.

Надеюсь, это поможет.

+0

См. мой ** EDIT: ** в вопросе Я пробовал это, но ничего не загружал. – Krunal

+0

Что вы получаете за ** NSLog (@ "_ место встречи: =% f", loc.coordinate); ** –

+0

Мой журнал показывает '_venue: = 51.516139', но карта не загружается. – Krunal

Смежные вопросы