我正在使用谷歌地图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];
}
但我想传递更多价值,怎么做?
答案 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 ??
更清晰,更可读