ArcGIS Runtime for IOS 几何对象与json的互相转换
分享
用户通过客户端绘制的几何对象在有的应用场景下可能需要保存起来以便后期使用,那么你可以考虑将几何对象转换为json然后保持到sqllite数据库中,后期需要时候的时候在通过解析json对象的方式返回几何对象给操作者,需要注意的是在本例中,在存储几何对象的同时也存储了该对象的类型为后期json解析为几何对象奠定基础。废话不多少,核心代码如下:
.h头文件中的定义如下:
#import <Foundation/Foundation.h>
#import <ArcGIS/ArcGIS.h>
@interface ConvterGeometryJson : NSObject
- (NSString*) GeometryToJson:(AGSGeometry*)geometry;
-(AGSGeometry*)JsonToGeometry:(NSString*)json geometype:(NSString*)type;
@end
.m文件实现如下:
#import "ConvterGeometryJson.h"
@implementation ConvterGeometryJson
-(NSString*)GeometryToJson:(AGSGeometry *)geometry
{
if (geometry==nil) {
return nil;
}
else
{
NSDictionary *json = [geometry encodeToJSON];
NSString* jsonString = [json ags_JSONRepresentation];
return jsonString;
}
}
-(AGSGeometry*)JsonToGeometry:(NSString *)json geometype:(NSString *)type{
NSDictionary* jsondic = [json ags_JSONValue];
AGSGeometry *geo;
if ([type isEqual:@"Point"]) {
geo=[[AGSPoint alloc]initWithJSON:jsondic];
} else if([type isEqual:@"Polyline"])
{
geo=[[AGSPolyline alloc]initWithJSON:jsondic];
}
else
{
geo=[[AGSPolygon alloc] initWithJSON:jsondic];
}
NSLog(@"%@",jsondic);
return geo;
}
@end
通过以上方法就完成了空间几何对象和json字符串的互相转换工作。另外需要注意的是在使用sqllite把转换的几何对象字符串写入数据库对应字段的过程中可能会遇到特殊字符的问题导致sql语句出现不可预知的错误,可以考虑通过如下方法解决:
sqlite3_bind_text(statement, 1,[name cStringUsingEncoding:1] , -1, SQLITE_TRANSIENT);
具体的sqllite可以查询其他相关资料
文章来源:http://blog.csdn.net/esrichinacd/article/details/9762023
.h头文件中的定义如下:
#import <Foundation/Foundation.h>
#import <ArcGIS/ArcGIS.h>
@interface ConvterGeometryJson : NSObject
- (NSString*) GeometryToJson:(AGSGeometry*)geometry;
-(AGSGeometry*)JsonToGeometry:(NSString*)json geometype:(NSString*)type;
@end
.m文件实现如下:
#import "ConvterGeometryJson.h"
@implementation ConvterGeometryJson
-(NSString*)GeometryToJson:(AGSGeometry *)geometry
{
if (geometry==nil) {
return nil;
}
else
{
NSDictionary *json = [geometry encodeToJSON];
NSString* jsonString = [json ags_JSONRepresentation];
return jsonString;
}
}
-(AGSGeometry*)JsonToGeometry:(NSString *)json geometype:(NSString *)type{
NSDictionary* jsondic = [json ags_JSONValue];
AGSGeometry *geo;
if ([type isEqual:@"Point"]) {
geo=[[AGSPoint alloc]initWithJSON:jsondic];
} else if([type isEqual:@"Polyline"])
{
geo=[[AGSPolyline alloc]initWithJSON:jsondic];
}
else
{
geo=[[AGSPolygon alloc] initWithJSON:jsondic];
}
NSLog(@"%@",jsondic);
return geo;
}
@end
通过以上方法就完成了空间几何对象和json字符串的互相转换工作。另外需要注意的是在使用sqllite把转换的几何对象字符串写入数据库对应字段的过程中可能会遇到特殊字符的问题导致sql语句出现不可预知的错误,可以考虑通过如下方法解决:
sqlite3_bind_text(statement, 1,[name cStringUsingEncoding:1] , -1, SQLITE_TRANSIENT);
具体的sqllite可以查询其他相关资料
文章来源:http://blog.csdn.net/esrichinacd/article/details/9762023
0 个评论
相关问题
- 如何优雅的使用ArcGIS知乎?
- 建设ArcGIS知乎平台的目和意义?
- ArcGIS知乎社区改进意见征集
- 【抽奖结果已出】ArcGIS知乎社区活动 之 你不知道的地理空间革命【转发分享有奖】【附奖品寄送照片】
- 苹果系统下可以使用arcgis 吗?
- arcgis版本兼容性
- 请问ArcGIS适合在局域网内用javaweb做二次开发吗?
- ArcGIS 知乎社区活动 之 字幕组加鸡腿暨KBP字幕组招新【获奖名单公布与优秀作品展示】
- 请问大神们,怎么用ArcGIS做城镇间经济联系强度的图?
- 在Visual studio 2015 中使用 Arcgis API for JavaScript v3.16 如何实现代码智能提示?
- ArcGIS如何求栅格图像的“质心”