2014-01-24 2 views
0

Итак, я создал карту Google с примерно 10 различными маркерами на контроллере View (ViewControllerX). Все маркеры размещаются в соответствии с lat/long координатами, вытаскиваемыми из базы данных MySQL.Передача изменения камеры GoogleMapsAPI через segue

Теперь у меня также есть TableView (ViewControllerY), который показывает пользователям список ближайших маркеров. Когда они нажимают на местоположение в представлении таблицы, он переносит их в контроллер подробного представления, который отображает информацию о местоположении. Тем не менее, я добавил кнопку в DetailViewController, в которой говорится: «Показать на карте».

Естественно, когда пользователи нажимают эту кнопку, я хочу, чтобы она нажала их на контроллер MapView (ViewControllerX) и увеличила масштаб на соответствующем маркере.

Я чувствую, что это должно быть легко, но это заставляет меня гайки. Ниже приведен пример, который я использую в моем DetailViewController, и код, который находится на принимающей стороне (в моем GoogleMapViewController).

Мой вопрос: Кто-нибудь знает, какой код мне нужно поместить внутри DetailViewController Segue & GoogleMapViewController сделать зум камеры в моей конкретной системе координат на карте?

DetailViewController.m

- (IBAction)showonMap:(id)sender { 

    UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_1" bundle:nil]; 
    UIViewController *initViewController = [storyBoard instantiateViewControllerWithIdentifier:@"GoogleViewController"]; 
    [self.navigationController pushViewController:initViewController animated:YES]; 


    } 

GoogleViewController.m (Google Map)

- (void)viewDidLoad 
{ 

    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:49.282237 
                  longitude:-123.125966 
            zoom:13]; 

    mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; 

    self.view = mapView; 

    for (NSDictionary *dictionary in array) { 
     assert([dictionary respondsToSelector:@selector(objectForKey:)]); 

     CLLocationCoordinate2D position = {[[dictionary objectForKey:@"lat"] doubleValue], 
      [[dictionary objectForKey:@"lng"] doubleValue]}; 
      NSLog(@"%f", position.longitude); 

     GMSMarker *ann = [[GMSMarker alloc] init]; 
     ann.title = [dictionary objectForKey:@"Name"]; 
     ann.snippet = [dictionary objectForKey:@"Address1"]; 
     ann.position = position; 
     ann.map = mapView; 


} 

ответ

0

Я думаю, что вы ищете setVisibleMapRect:animated: метод, который будет увеличить к данной MKMapRect.

Вы можете создать MKMapRect, используя функцию MKMapRectMake, исходя из положения маркера в качестве его центра и ширины и высоты в зависимости от уровня масштабирования, который вы хотите.

Надеюсь, что это сработает для вас.

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