Archive for the Category: ArcGIS

ArcGIS runtime for iOS中自定义MarkerSymbol

在GIS 的开发中,符号是一个很重要的东西,当然99%的需求都可以使用图片来解决,但有1%的需求必须使用自定义MarkerSymbol来解决,例如天气预报中的九宫格和风向标等,要根据数据的属性去动态绘制这些符号,如果用图片的话,估计满篇都是if-else。 废话少说,在ArcGIS runtime for iOS中自定义MarkerSymbol,首先继承AGSMarkerSymbol #import “ArcGIS.h” @interface TriangleFlagMarker : AGSMarkerSymbol @end 实现 – (void)drawGraphic:(AGSGraphic*)graphic atX:(float)x y:(float)y inContext:(CGContextRef)context 和 – (CGSize) drawingSize 方法 drawingSize方法控制绘制symbol的大小 在drawGraphic方法中绘制符号 – (void)drawGraphic:(AGSGraphic*)graphic atX:(float)x y:(float)y inContext:(CGContextRef)context { NSLog(@”%f-%f”,x,y); if (graphic != nil) { NSLog(@”graphic nil”); } CGContextSetRGBFillColor(context, 0, 0, 255, 0.1); CGContextSetRGBStrokeColor(context, 0, 0, 255, 0.5); CGContextFillEllipseInRect(context, CGRectMake(x, y, 10, […]

Also posted in ArcGIS API for iOS, iOS Leave a comment

使用ArcGIS制作virtualNetwork中的网络数据

在SpatiaLite VirtualNetwork 介绍文章中介绍了virtualNetwork,其中virtualNetwork的网络数据要求制作arc,并指出arc的起始节点和终止节点。 那么根据我们在GIS中获取地铁线路数据文中用的方法获取到的地铁数据如何制作一个能够进行网络分析的数据呢,方法很简单,使用ArcGIS。 1 打开ArcGIS,加载地铁线路数据和地铁站数据 2 检查并编辑数据,看一下换乘站和各线是否连通,由于数据不准确,会在后面的过程中造成问题。当然这个地方也可以使用arcgis的topo规则进行检查。 3 使用split line at point 工具将地铁线路使用地铁站打断,这样得到的每条线段即为一个arc,我们称之为arc图层。 4 下面计算arc的起始和终止节点,使用spatial join工具,将得到的arc图层和地铁站进行空间join,选择JOIN_TO_MANY,保证能把起始终点全部join。 在join后的结果列表arc_join中可以发现每个arc都都有两条结果,这两个结果不是按照线路的顺序来的,不过对于无向图,这个无所谓。 5 现在arc的起始和结束节点已经有了,但是存储在两条记录里,我们要把这些合并到一条记录里,打开arc_join的属性表,选择summarize,使用summarize来进行统计。选择地铁站名对应的字段,选择Fisrt和last。 统计结果(arc_join_sum)如下图,每个targetFID对应的起始和重点地铁站都在一条记录中了。 剩下来就比较简单了,使用属性join工具,将arc图层和arc_join_sum使用objectID 和targetFID进行关联,将地铁站名字段复制到arc图层。 再将arc图层和地铁站点图层根据地铁站名进行关联,把地铁站FID作为F_NODE和T_NODE进行赋值。  

Also posted in shape file, spatialite, Uncategorized Leave a comment

在iOS中实现键盘的隐藏

在iOS开发中,经常会遇到点击UISearchbar 中的textFiled后弹出键盘,但又不想搜索,键盘无法隐藏的情况。 特别是cydia应用就是典型的代表。 下面介绍一种方法,在键盘弹出后,轻触页面隐藏键盘的方法: 1 在键盘弹出后添加对屏幕轻触事件进行监听 2 轻触页面,隐藏键盘 3 在隐藏键盘的时候移除对屏幕轻触事件的监听 代码如下: -(void) initGesture { NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; [nc addObserver:self selector:@selector(keyboardWillShow:) name: UIKeyboardWillShowNotification object:nil]; [nc addObserver:self selector:@selector(keyboardWillHide:) name: UIKeyboardWillHideNotification object:nil]; _tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapAnywhere:)]; } -(void) keyboardWillShow:(NSNotification *) note { [self.view addGestureRecognizer:_tapRecognizer]; } -(void) keyboardWillHide:(NSNotification *) note { [self.view removeGestureRecognizer:_tapRecognizer]; } -(void)didTapAnywhere: […]

Also posted in ArcGIS API for iOS Leave a comment

ArcGIS Rumetime for iOS graphics drop 效果实现

– (void)queryTask:(AGSQueryTask *)queryTask operation:(NSOperation*)op didExecuteWithFeatureSetResult:(AGSFeatureSet *)featureSet { for (int i = 0; i< [featureSet.features count]; i++) { AGSGraphic * gra = [featureSet.features objectAtIndex:i]; AGSPictureMarkerSymbol * picSymbol = [AGSPictureMarkerSymbol pictureMarkerSymbolWithImage:[UIImage imageNamed:@”00.png”]]; gra.symbol = [self  stopSymbolWithNumber:i]; gra.infoTemplateDelegate = _poiCalloutTemp; AGSPoint * pnt = (AGSPoint*) gra.geometry; if ([self.mapView.visibleArea.envelope containsPoint: pnt]) { CGPoint screenPnt = [self.mapView toScreenPoint:pnt]; UIImageView * […]

Also posted in ArcGIS API for iOS, Uncategorized Leave a comment

[2012 Esri中国Dev UC ]ArcGIS runtime for iOS 高级开发 ppt 下载

ArcGIS runtime for ios.pdf

Also posted in ArcGIS API for iOS 1 Comment

使用xcrun打包iOS应用

XCode 默认编译出来的是appName.app 包,而iphone,ipad的安装文件是ipa文件。 将.app包打包成ipa最简单的方式是将appName.app 拖放到itunes中,然后在itunes的相关目录中找到appName.ipa,但这样测试的时候没生成一个版本都有重新做一遍。 使用xcrun命令可以帮我们自动完成打包工作,可以方便的测试,并且可以指定签名,生成不同的版本。 当然对于提供给越狱用户的应用也很有意义。 xrun的使用方法如下: /usr/bin/xcrun -sdk iphoneos PackageApplication -v “${RELEASE_BUILDDIR}/${APPLICATION_NAME}.app” -o “${BUILD_HISTORY_DIR}/${APPLICATION_NAME}.ipa” –sign “${DEVELOPER_NAME}” –embed “${PROVISONING_PROFILE}” 当然你可以把上面的命令添加到XCode build Phase中,项目编译完成自动打包。

Also posted in ArcGIS API for iOS, iOS, iPad, iPhone4, Mac OS X Leave a comment

通过UIView对象获取该对象所属的UIViewController

通过UIView对象获取该对象所属的UIViewController可以使用UIResponder的nextResponder方法获得, UIView类继承于UIResponder,因此可以直接使用。 根据文档描述,如果View有view controller,则通过nextResponder方法返回,如果没有则返回superview。 下面是英文原文: if the view has a view controller, it is returned by nextResponder. If there is no view controller, the method will return the superview 相关代码如下:遍历该View的树形结构,获取到其所属的ViewController – (UIViewController*)viewController {   for (UIView* next = [self superview]; next; next = next.superview) {     UIResponder* nextResponder = [next nextResponder];     if […]

Also posted in iOS, iPad, iPhone4, Mac OS X Leave a comment

在XCode工程中创建bundle文件

在ios开发中为了方便管理资源文件,可以使用bundle的方式来进行管理,类似于ArcGIS Runtime for iOS中的ArcGIS.bundle . 切记目前iOS中只允许使用bundle管理资源文件和国际化信息,不支持代码的打包。 在xcode3.2.5 中只能够创建setting bundle,会默认创建一些配置文件,在xcode中无法直接删除,这也许不是我们需要的。 那么如何使用最简单的方法创建一个bundle呢? 1 创建一个文件夹 2 将该文件夹重命名为a.bundle 3 将a.bundle拖入到xcode中即可 bundle的本质就是一个文件夹。当然在iOS中还可以干很多事情,详细资料请参考: https://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFBundles/AboutBundles/AboutBundles.html#//apple_ref/doc/uid/10000123i-CH100-SW7

Also posted in ArcGIS API for iOS, iOS Leave a comment

自定义UISearchBar

UISearchBar是在iOS开发中经常用到的一个组件,那么我们如何来实现一个类似AMAP中的SearchBar呢? 我们可以首先来观察一下,这个searchBar和默认的有什么区别? 默认的SearchBar,如下图: 首先有起点和终点这样的文字提示,默认的是一个搜索图标。 其次是文本框的边框是圆角矩形,默认的是圆角为半圆型。 那么我们实现自定义的UISearchBar就需要修改这两项。 实现的方式就是重新实现UISearchBar的layoutSubviews方法 – (void)layoutSubviews { UITextField *searchField; NSUInteger numViews = [self.subviews count]; for(int i = 0; i < numViews; i++) { if([[self.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) { //conform? searchField = [self.subviews objectAtIndex:i]; } } if(!(searchField == nil)) { searchField.textColor = [UIColor redColor]; // [searchField setBackground: [UIImage imageNamed:@”esri.png”] ]; [searchField setBorderStyle:UITextBorderStyleRoundedRect]; UIImage […]

Also posted in ArcGIS API for iOS, esri, gis, iOS, iPad, iPhone4, Mac OS X Leave a comment

在Mac OS上使用触摸板手势来控制地图漫游(ArcGIS API for JavaScript)

随着Apple机器的越来越普及,Mac机器的触摸板手势越来越流行,当然也非常好用。 ArcGIS API for JavaScript 计划将该功能集成到v2.7 版本当中,并且目前放出了一个测试链接,感兴趣的朋友可以尝试一下: http://servicesbeta.esri.com/demos/blog/TrackPadDemo.html 操作手势主要分为两种模式:pan和zoom 在Pan模式下,双指上下左右滑动即可漫游地图,双指点击触摸板即将Pan模式切换到zoom 模式,这时候双指上下滑动即进行缩放。 注意该功能只在Mac OS  Snow Leopard 10.6 以及Mac OS  Lion 10.7 支持        

Also posted in JavaScript, Mac OS X Leave a comment