使用者通過用戶端繪製的幾何對象在有的應用情境下可能需要儲存起來以便後期使用,那麼你可以考慮將幾何對象轉換為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可以查詢其他相關資料