ArcGIS Runtime SDK for iOS开发-展示callout
2015-04-06 17:44
489 查看
本文翻译自https://developers.arcgis.com/ios/objective-c/guide/map-callout.htm;
有时候利用callout来展示图元要素的有关信息是一件很方便的事情。
callout 停靠在图形处,callout显示图形的信息时主要分为两个部分:标题和详细信息。callout同时也有一个accessory按钮。accessory按钮用来显示另一个视图窗口,以此来展示更多的详细信息。同时callout也能在标题的左端显示一张40*40像素的图片。
![](http://img.blog.csdn.net/20150406175209758?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGxqMTg0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
一个callout 是AGSCallout的一个实例。地图同时只能有一个callout,你可以通过AGSMapView中的callout属性来访问。
自定义callout的外观
你可以改变callout的一些可视化属性如:它的背景颜色、宽度、文字颜色、可见度和accessory按钮的外观等等,所有这些元素都可以在AGSCallout的对象中进行访问。
![](http://img.blog.csdn.net/20150406180135712?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGxqMTg0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在图形要素点击处显示callout
当用户点击地图上的要素时,callout的代理就会被访问以决定要素对应的callout是否被展示。代理不仅可以控制callout的展示,同时也可以通过修改AGSCallout对象上的属性来定制caollout所呈现的信息。
默认情况下,callout的代理是没有被初始化的。要想展示一个callout,你需要将其代理<AGSCalloutDelegate>设置为你工程中的一个类(一般是视图控制器view controller),并执行协议中定义的一个或多个方法。下面的代码展示了具体的调用方法:
如果你想暂时使得要素的callout实效,你可以设置AGSMapView中的属性allowCallout为NO。这样的化,无论你如何点击地图,地图都不会访问callout的代理了。
利用程序来展示callout
例如,当你点击列表中的一个要素时,你希望地图缩放到该要素并显示callout,那么就可以利用下面方法来实现:
通过showCalloutAt:screenOffset:animated: 方法来实现在地图上任意一个位置显示callout。 通过showCalloutAtPoint: forFeature: animated:方法来展示某个特定的要素的callout。
callout的附件按钮(accessory button)响应事件
callout通常适合显示少量的信息,但是有时候我们可能有更多的信息需要展示,怎么办?这里caollout为我们提供了选择性的accessory 按钮,利用它开发者可以展示额外的视图控制器。
当附件按钮被点击时,callout的代理就会通知调用didClickAccessoryButtonForCallout:方法。
取消callout
当用户点击callout以外的区域的话,callout会自动消失。但是如果你想通过代码的方法来使其消失,可以调用下面的方法:
有时候利用callout来展示图元要素的有关信息是一件很方便的事情。
callout 停靠在图形处,callout显示图形的信息时主要分为两个部分:标题和详细信息。callout同时也有一个accessory按钮。accessory按钮用来显示另一个视图窗口,以此来展示更多的详细信息。同时callout也能在标题的左端显示一张40*40像素的图片。
一个callout 是AGSCallout的一个实例。地图同时只能有一个callout,你可以通过AGSMapView中的callout属性来访问。
自定义callout的外观
你可以改变callout的一些可视化属性如:它的背景颜色、宽度、文字颜色、可见度和accessory按钮的外观等等,所有这些元素都可以在AGSCallout的对象中进行访问。
//don't show the accessory button mapView.callout.accessoryButtonHidden = YES; //or use a custom image for the accessory button mapView.callout.accessoryButtonType = UIButtonTypeCustom; mapView.callout.accessoryButtonImage = [UIImage imageNamed:@"<my_image.png>"]; //Change color of background, title and detail mapView.callout.color = [UIColor blueColor]; mapView.callout.titleColor = [UIColor redColor]; mapView.callout.detailColor = [UIColor greenColor];另外,你也可以通过设置customView的属性来嵌入你自己的视图,来完全改变caollout的外观感受效果。
在图形要素点击处显示callout
当用户点击地图上的要素时,callout的代理就会被访问以决定要素对应的callout是否被展示。代理不仅可以控制callout的展示,同时也可以通过修改AGSCallout对象上的属性来定制caollout所呈现的信息。
默认情况下,callout的代理是没有被初始化的。要想展示一个callout,你需要将其代理<AGSCalloutDelegate>设置为你工程中的一个类(一般是视图控制器view controller),并执行协议中定义的一个或多个方法。下面的代码展示了具体的调用方法:
@interface MyViewController : NSObject <AGSCalloutDelegate> ... @end @implementation MyViewController ... -(BOOL)callout:(AGSCallout*)callout willShowForFeature:(id<AGSFeature>)feature layer:(AGSLayer<AGSHitTestable>*)layer mapPoint:(AGSPoint*)mapPoint{ //Specify the callout's contents mapView.callout.title = (NSString*)[feature attributeForKey:@"Name"]; mapView.callout.detail =(NSString*)[feature attributeForKey:@"Address"]; mapView.callout.image = [UIImage imageNamed:@"<my_image.png>"]; return YES; } @end
如果你想暂时使得要素的callout实效,你可以设置AGSMapView中的属性allowCallout为NO。这样的化,无论你如何点击地图,地图都不会访问callout的代理了。
利用程序来展示callout
例如,当你点击列表中的一个要素时,你希望地图缩放到该要素并显示callout,那么就可以利用下面方法来实现:
通过showCalloutAt:screenOffset:animated: 方法来实现在地图上任意一个位置显示callout。 通过showCalloutAtPoint: forFeature: animated:方法来展示某个特定的要素的callout。
callout的附件按钮(accessory button)响应事件
callout通常适合显示少量的信息,但是有时候我们可能有更多的信息需要展示,怎么办?这里caollout为我们提供了选择性的accessory 按钮,利用它开发者可以展示额外的视图控制器。
当附件按钮被点击时,callout的代理就会通知调用didClickAccessoryButtonForCallout:方法。
@implementation MyViewController ... - (void) didClickAccessoryButtonForCallout: (AGSCallout *) callout { //Handle tap on the accessory button when callout was displayed for a graphic } @end
取消callout
当用户点击callout以外的区域的话,callout会自动消失。但是如果你想通过代码的方法来使其消失,可以调用下面的方法:
[self.mapView.callout dismiss];
相关文章推荐
- ArcGIS Runtime SDK for iOS(一) – 实现地图的不同点的callout展示
- ArcGIS Runtime SDK for iOS(三) --- Callout的自定义属性展示
- ArcGIS Runtime SDK for iOS开发系列教程(2)——MapViewDemo解析
- ArcGIS Runtime SDK for iOS开发系列教程(4)——如何让你的iOS应用具有GIS能力
- ArcGIS Runtime SDK for iOS开发介绍
- ArcGIS Runtime SDK for iOS 开发之加载地图
- ArcGIS Runtime SDK for iOS开发地图图层-切片地图服务图层
- ArcGIS Runtime SDK for iOS开发系列教程(2)——MapViewDemo解析
- ArcGIS Runtime SDK for iOS开发系列教程(5)——要素信息的绘制
- ArcGIS Runtime SDK for iOS开发系列教程(1)——开发前准备
- ArcGIS Runtime SDK for iOS开发系列教程(0)——PPT分享(iOS历史、Objective-C语法、SDK介绍)
- ArcGIS Runtime SDK for iOS开发系列教程
- ArcGIS Runtime SDK for iOS 开发之地图范围(map extent)
- ArcGIS Runtime SDK for IOS 开发之启程篇
- ArcGIS Runtime SDK for iOS开发系列教程(5)——要素信息的绘制
- ArcGIS Runtime SDK for iOS开发系列教程(6)——Tasks使用的一般流程
- ArcGIS Runtime SDK for iOS开发之地图图层-动态地图服务层
- ArcGIS Runtime SDK for iOS开发地图图层-图形图层
- ArcGIS Runtime SDK for iOS开发地图图层-影像地图服务图层
- ArcGIS Runtime SDK for iOS开发系列教程(8)——Geoprocessor使用