ArcGIS Runtime for IOS 几何对象与json的互相转换

本文介绍了如何在iOS应用中使用ArcGIS Runtime将几何对象转换为JSON字符串,以便存储到SQLite数据库中。之后,文章展示了如何解析JSON回转换为几何对象。在转换过程中,还特别提到处理特殊字符以避免SQL语句错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    用户通过客户端绘制的几何对象在有的应用场景下可能需要保存起来以便后期使用,那么你可以考虑将几何对象转换为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可以查询其他相关资料


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值