在注释点击上传递值 - iphone谷歌地图SDK

时间:2013-06-28 04:32:16

标签: iphone ios objective-c google-maps map

我正在使用谷歌地图SDK来显示我的iPhone应用程序中的位置。 在录制注释时,我将导航到地方的详细信息页面。为此,我必须传递该地点的值

目前我正在使用

-(void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(id<GMSMarker>)marker {

 DetailViewController *Detail = [[DetailViewController alloc]initWithNibName:@"DetailViewController" bundle:nil];

     Detail.address=marker.snippet;
     Detail.name = marker.title;
   [self.navigationController pushViewController:Detail animated:YES];


}

但我想传递更多价值,怎么做?

4 个答案:

答案 0 :(得分:1)

实际上不需要强硬的方法。在文档中我们可以通过annotation.userData

传递任何数据。

分配这样的详细信息......

   options.title = @"Some Title";
    options.userData = @"data"; // you can assign any data to this like NSData,String,Array etc
   options.snippet =@"Some thing";

并像这样传递这些数据

-(void)mapView:(GMSMapView *)mapView didTapInfoWindowOfMarker:(id<GMSMarker>)marker {
    DetailViewController *Detail = [[DetailViewController alloc]initWithNibName:@" DetailViewController" bundle:nil];


   Detail.data=marker.userData;  // passing the data

[self.navigationController pushViewController:restDetail animated:YES];


}

答案 1 :(得分:0)

您需要在GMSMarker类中设置更多Propery,如片段,标题,您可以在DetailViewController类中传递更多值,如地址,名称。

希望,你理解我想说的话!!!

答案 2 :(得分:0)

我认为Dipak试图说的是在marker之后添加更多类(Class)method。您可能需要括号。

答案 3 :(得分:0)

另一种方法是为标记的键设置值:

marker.setValue("20", forKey: "id")

您可以稍后使用:

获取
marker.value(forKey: "id")

我的方法是为GMSMarker创建一个扩展,并使用userData属性使GMSMarker符合我的需要,对我来说,我想用Branch类的实例添加每个标记(带有标记的地图用于某些分支)公司)这就是我的方式:

extension GMSMarker {
    var branch: Branch {
        set(branch) {
            self.userData = branch
        }

        get {
           return self.userData as! Branch
       }
   }
}

所以当我设置标记属性时,我将它设置为:

marker.branch = someBranch

不是比marker.userData = someBranch ??

更清晰,更可读