tpk是ArcGIS10.1推出的一种新的数据文件类型,主要是用于将切片文件打包形成离线地图包,tpk可以在ArcGIS Runtime或者ArcGIS for Android/iOS中作为切片底图被加载,有多种制作tpk的方法,分别如下:
在ArcGIS10.1中tpk的生成被集成在了ArcGIS for Desktop中,制作方法如下:
1、打开ArcMap,将数据加载进来,选择菜单Customize-》ArcMap Options,在弹出的对话框中选择“sharing”选项卡,勾选“Enable ArcGIS Runtime Tools”;
2、此时,在File文件菜单中的“share as…”菜单下就多了一个选项“Tile Package…”,选择该菜单,弹出“Tile Package”对话框,设置各个标签页中的参数,基本都和发布ArcGIS for Server地图服务时的参数相同,填写完成后点击“Analyze”,如果报错则根据错误提示重新修改各个参数,最后点击Share,开始制作tpk文件:
另外一种方法是直接通过GP工具完成tpk的制作。
选择“ArcToolbox”-》“Data Management Tools ”-》“Create Map Tile Package”,如下:
运行该GP工具,弹出如下对话框:
选择要制作tpk的地图文档mxd,指定tpk保存的位置,切片格式默认使用PNG,级别根据需要设置,点击“ok“即可完成的tpk制作。
使用已有的紧凑型切片制作tpk
tpk文件其实是一个zip文件,通过解压缩Tpk文件,我们可以得到tpk文件的内部结构,由esriinfo和V101两个文件夹组成,如下图:
其中,"Trchive"可以替换为你自己项目中的实际名称,其它文件夹名称或文件名称均不能更改。thumbnail文件夹中存放的是切片的一个缩略图,其余文件是描述文件或者说是tpk文件的配置信息文件,尽管有一个文件的后缀名pkinfo,都是XML结构的;V101文件夹中就是我们熟悉的紧凑型切片数据和一个.layer文件。
熟悉了tpk的结构,制作tpk数据集就容易了,先按照其组成在项目文件夹下新建两个目录esriinfo和V101,之后制作其它文件,我们需要制作的文件共有四个:一个缩略图,两个描述文件,以及一个layer文件。
为切片制作一个200×133大小,格式为png的缩略图,并保存至esriinfo目录下的thumbnail文件夹下(在实际过程中,没这个文件也是可以的)。
3、生成item.pkinfo文件
在esriinfo目录下新建文件item.pkinfo,文件内容如下,红色部分需修改(其实 Culture='zh-CN'这个也可以修改,不同的国家这个是不一样的,因为我们都在中国,所以这个我就略过了):
<?xml version="1.0"encoding="utf-8" ?>
<?xml-stylesheettype="text/xsl"
href="http://www.arcgisonline.com/home/pkinfostylesheet.xsl"?>
<pkinfo Culture='zh-CN'>
<ID>F24BC58B-F4A6-4414-921D-B762DE9545F3</ID>
<name>Test</name>
<version>10.1Pre-release</version>
<size>-1</size>
<created></created>
<type>Tile Package</type>
<servable>false</servable>
<packagelocation></packagelocation>
<pkinfolocation></pkinfolocation>
</pkinfo>
4、生成iteminfo.xml文件
在esriinfo目录下新建文件iteminfo.xml,文件内容如下,红色部分必须修改,蓝色部分为一些描述信息,可随意填写:
<?xml version="1.0"encoding="utf-8" ?>
<ESRI_ItemInformationCulture='zh-CN'>
<name>Test</name>
<guid>F24BC58B-F4A6-4414-921D-B762DE9545F3</guid>
<catalogpath></catalogpath>
<snippet>Test</snippet>
<description>Test</description>
<summary>Test</summary>
<title>Test</title>
<tags>Test</tags>
<type>Tile Package</type>
<typekeywords>
<typekeyword>TilePackage</typekeyword>
<typekeyword>ArcGISRuntime</typekeyword>
<typekeyword>.tpk</typekeyword>
</typekeywords>
<thumbnail>thumbnail/thumbnail.png</thumbnail>
<documentation></documentation>
<url></url>
<datalastmodifiedtime></datalastmodifiedtime>
<extent>
<xmin>-179.999999999987</xmin>
<ymin>-86.3842826037127</ymin>
<xmax>179.999999999987</xmax>
<ymax>86.3842826106563</ymax>
</extent>
<spatialreference>WGS_1984_Web_Mercator_Auxiliary_Sphere</spatialreference>
<accessinformation></accessinformation>
<licenseinfo></licenseinfo>
</ESRI_ItemInformation>
Tips:可能你已经注意到,这两个配置文件中,红色部分的<name>和<guid>标签的值是一样的,对,它们的值必须一一对应,name为.mxd的名字,guid则是全球唯一标识号,可使用一些软件自动生成。关于guid的生成网络上有很多介绍,在此不赘述。
打开ArcMap,添加切片文件到ArcMap中,设置文档保存属性为相对路径,将添加的切片图层另存为layer文件,同时,将生成的切片文件和layer文件拷贝至V101目录下。
6、打包为tpk
将整个项目目录打包为zip,打包时选择存储。将文件后缀名更改为tpk就得到我们所需要的tpk文件了。
使用UITextFieldDelegate这个协议实现隐藏键盘。需要三步:
1. 在你的控制器类中,加入UITextFieldDelegate协议,如:
@interface EditingPersonViewController : UIViewController<UITextFieldDelegate>
2. 根据协议的要求,在实现文件中加入textFieldShouldReturn方法,如:
-(BOOL) textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
3. 将xib文件中的TextField控件的delegate变量指向到之前使用UITextFieldDelegate协议的那个控制器类 将TextField的delegate IBOutlet变量右键链接到前面的控制器类的实例上。
或者使用代码方式,指定相关TextField的delegate变量。
- (void)viewDidLoad {
[super viewDidLoad];
itemNameField.delegate = self;
priceField.delegate = self;
}
第三步很容易忽略,之前就因为忘记指定delegate变量,导致点击键盘的return健,键盘死活不隐藏。
实现了这三步后,用户就可以点击键盘上的Return键来隐藏键盘。
十一长假也过了,再有长假就得春节见了。因朋友的一句话,我关注二维码已经有一段时间了,也研究了相关资料,从今天起开始重点撰写二维码及其相关技术知识。
二维码不是最近才有的,它已经在市面上有几个年头了。腾讯马化腾也公开表示:二维码将成线上线下关键入口。我赞同这种说法,二维码的只要通过扫描就可以获得里面复杂的信息内容,从而解脱了我们的双手。所以,我对二维码的理解就是:不想用户输入大量复杂内容时的最佳选择。举例来说,以前用手机上网,最麻烦的事就是输入网址。现在,只要手机摄像头对准二维码,就可以获得里面包含的网址,并且可以直接开打。所以,我说二维码随着智能手机的发展,也迎来了它的春天。
二维码有很多种表现形式,最为流行和知名的就要数PDF417和QR。在他们两个中,QR二维码又是在业内使用最为广泛的,最为成熟的技术。典型的案例就包括腾讯微信,以及新浪微博。很有意思的是,前段时间保钓行动的抵制日货,而QR二维码正是日本Denso-Wave公司发明的。
接下来聊聊微信和微博的二维码:
新浪微博的二维码,则是在中间增加了头像。开始我以为新浪采用了更高的技术,可以在扫描二维码的同时,将二维码中的头像也能读取出来。在后来看了相关技术资料才明白,新浪只是合理的利用了二维码技术规则,增加了一些自己的装饰而已,并没有改变QR二维码。类似情况的腾讯微信二维码,它就丰富了很多,可以选择很多种二维码样式,原理也是一样的。单从显示效果而已,我认为微信二维码的装饰就要比新浪微博的效果差些,增加花边的效果没有中间放个头像更吸引对方注意。
另外,还有一位博主写了篇关于二维码颜色变换的文章,大家可以看看,学习学习。
对于二维码的应用,现在比较稳定的要数ZXing了,最新的版本是1.7。从代码注解中可以看到,它创作于2007年,包含了多个平台:j2se、j2me、android、ios、symbian等。除了二维码,它还可以扫描一维码(条形码)。这里附上其java版的core,想直接用lib的,可以下载这个:
ZXing1.7Core