通过segue传递GoogleMapsAPI相机

时间:2014-01-24 23:57:31

标签: ios objective-c google-maps segue

所以我在View Controller(ViewControllerX)中创建了一个包含大约10个不同标记的Google Map。根据从MySQL数据库中提取的纬度/经度坐标放置所有标记。

现在我还有一个TableView(ViewControllerY),向用户显示附近标记的列表。当他们单击tableview中的某个位置时,会将它们带到显示有关该位置信息的详细视图控制器。也就是说,我在DetailViewController中添加了一个按钮,上面写着“在地图上显示”。

当然,当用户单击此按钮时,我希望它将它们推送到MapView控制器(ViewControllerX)并放大相应的标记。

我觉得这应该很容易,但它让我疯了。这是我在DetailViewController中使用的segue,以及接收端的代码(在我的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(谷歌地图)

- (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;


}

1 个答案:

答案 0 :(得分:0)

我认为您正在搜索setVisibleMapRect:animated:方法,该方法将缩放到给定的MKMapRect

您可以使用功能MKMapRect创建MKMapRectMake,基于标记位置作为中心,宽度和高度,具体取决于您希望的缩放级别。

希望它对你有用。