使用ArcGIS API for ios开发时的一些经验与问题
http://www.gisall.com/html/71/22171.html一、 经验
1、类的成员,除了可以在类内部值共享、类外部值传递以外,它还具有生存周期较长的特点。对于某些复杂结构,若将其定义成类成员,内存更容易管理。例如,ArcGIS API中的AGSMapServiceInfo,虽然作为局部变量使用,没有什么问题。但是,在内存释放时容易产生内存泄露。如将其设置为成员变量,则dealloc中进行释放则不会出现问题。
2、C语言中的数据类型:Objective-C可以兼容C语言的数据类型和方法。但是在使用时要小心,比如布尔型:bool是C语言的,其值为0,1;而BOOL是Objective-C的数据类型,其值为YES 、NO。
3、使用ArcGIS API绘制多边形,如果需要将绘制好的多边形提交给服务端时,则多边形的最后一个端点必须与第一个端点一致。
4、Objective-C中包含一个特殊类NSNull,利用他可以对某些值是否为空类型进行判断,如:
if( (NSNull *)typenum != [NSNull null])
这里判断的是对象的类型是否为空。当对象的类型不为空,其值为空时,使用的是nil。
5、UITableView的显示机制和以往的程序写法稍有不同,它通过回调函数,来获得表格有多少个栏目,每个栏目的名称,每个栏目包含子项的个数及子项的内容。这样的风格虽然有些别扭,但事实上是mvc的一种体现。即界面控件与数据分开。当表格界面(V)被打开时,利用回调函数(C)来GET数据(M),从而形成显示的条目。
二、 问题
1、 UIButton使用setImage:设置图片是没问题的。但是UIBar的UIBarButtonItem若直接设置图片,则不能显示出来,原因不明。
现在的解决方法是构造一个UIButton:
[customBtn setBackgroundImage:image forState:UIControlStateNormal];
UIBarButtonItem *addPtItem = [[UIBarButtonItem alloc] initWithCustomView:customBtn];
2、 当使用featureservice,从服务端获得多边形时,得到的端点顺序始终都是顺时针的。这样的数据结构,虽然比较严谨,易于管理,但是端点的编辑顺序就被忽略了。
3、 AGSFeatureLayer包含有属性geometryType,它描述该图层的几何类型。而在实际的使用过程中,这一属性的解析获取会有些延误。若网络速度较慢,其默认的值是point。只有在图层完全load后,或作一些成功的查询操作后,geometryType才能获得准确的数据类型。
4、 地图load完成的事件,好像目前还无法捕捉到。
欢迎大家来讨论!~