0

我正在使用 google 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

4 回答 4

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


}
于 2013-07-01T11:58:31.480 回答
0

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

希望,你明白我想说什么!!!

于 2013-06-28T08:59:48.137 回答
0

我认为 Dipak 想说的是在markerlike后面添加更多 Class (Class)method。你可能需要括号。

于 2013-06-28T09:22:05.820 回答
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 更清晰、更易读吗?

于 2017-09-11T13:35:21.067 回答