地图

App.m

ViewController *vc = [[ViewController alloc]init];

UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:vc];

self.window.rootViewController = nav;

DITU.h

@interface diTu : NSObject

//创建主键

@property(nonatomic,assign)NSInteger integer;

//地址  经度  纬度

@property(nonatomic,strong)NSString *dizhi;

@property(nonatomic,strong)NSString *jinDu;

@property(nonatomic,strong)NSString *weiDu;

loadData.h

#import#import "diTu.h"

@interface loadData : NSObject

{

sqlite3 *DB;

}

// 单例

+(instancetype)shardData;

// 初始化数据库

-(void)initData;

// 创建数据库表格

-(void)createtable;

// 关闭数据库

-(void)closeDataBase;

// 添加数据

-(void)addData:(diTu *)thaData;

// 删除数据

-(void)deleteData:(NSInteger)theId;

// 修改数据

-(void)changeData:(diTu *)theData;

// 查询数据

-(NSMutableArray *)dataArray;

loadData.m

#import "loadData.h"

static loadData *ld = nil;

@implementation loadData

// 单例

+(instancetype)shardData

{

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

ld = [[loadData alloc]init];

});

return ld;

}

+(instancetype)allocWithZone:(struct _NSZone *)zone

{

if (!ld)

{

ld = [super allocWithZone:zone];

}

return ld;

}

-(id)copy

{

return self;

}

-(id)mutableCopy

{

return self;

}

// 初始化数据库

-(void)initData

{

// 创建Docmuent目录

NSString *strPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)objectAtIndex:0];

// 拼接数据库的表名的路径

NSString *strName = [strPath stringByAppendingString:@"/didi.db"];

NSLog(@"++++++++%@",strName);

if (sqlite3_open([strName UTF8String], &DB)==SQLITE_OK)

{

NSLog(@"打开是成功的");

[self createtable];

}else

{

NSLog(@"打开失败");

}

}

// 创建数据库表格

-(void)createtable

{

// 创建sql语句,格式:create table if not exists 表名(主键 id integer primary key,加上所有用到的数据)

const char *sql = "create table if not exists diTu(inTeger integer primary key,dizhi text,weidu text,jingdu text)";

// 预编译指针

sqlite3_stmt *stmt;

// 绑定预编译指针

sqlite3_prepare_v2(DB, sql, -1, &stmt, nil);

// 执行预编译指针

if (sqlite3_step(stmt) == SQLITE_DONE)

{

NSLog(@"表格创建成功");

}else

{

NSLog(@"表格创建失败");

}

}

// 添加数据

-(void)addData:(diTu *)thaData

{

// 格式:insert into 表名 values(null,添加的数据?,?)

const char *sql = "insert into diTu values(null,?,?,?)";

// 预编译指针

sqlite3_stmt *stmt;

// 绑定预编译指针

sqlite3_prepare_v2(DB, sql, -1, &stmt, nil);

// 绑定地址占位符

sqlite3_bind_text(stmt, 1, [thaData.dizhi UTF8String], -1, SQLITE_TRANSIENT);

// 绑定经度占位符

sqlite3_bind_text(stmt, 2, [thaData.jinDu UTF8String], -1, SQLITE_TRANSIENT);

// 绑定纬度占位符

sqlite3_bind_text(stmt, 3, [thaData. weiDu UTF8String], -1, SQLITE_TRANSIENT);

// 执行预编译指针

sqlite3_step(stmt);

// 销毁预编译指针

sqlite3_finalize(stmt);

}

// 删除数据

-(void)deleteData:(NSInteger)theId

{

// 格式:delete from 表名 where 表格的主键名:id = ?

const char *sql = "delete from diTu where integer = ?";

// 预编译指针

sqlite3_stmt *stmt;

// 绑定预编译指针

sqlite3_prepare_v2(DB, sql, -1, &stmt, nil);

// 绑定占位符

sqlite3_bind_int(stmt, 1, (int)theId);

// 执行预编译指针

sqlite3_step(stmt);

// 销毁预编译指针

sqlite3_finalize(stmt);

}

// 修改数据

-(void)changeData:(diTu *)theData

{

// 格式:update 表名 set 数据类型 where 主键id

const char *sql = "update diTu set dizhi = ?,weidu = ?,jingdu = ?, where integer = ?";

// 预编译指针

sqlite3_stmt *stmt;

// 绑定预编译指针

sqlite3_prepare_v2(DB, sql, -1, &stmt, nil);

// 绑定占位符

sqlite3_bind_text(stmt, 1, [theData.dizhi UTF8String], -1, SQLITE_TRANSIENT);

sqlite3_bind_text(stmt, 2, [theData.jinDu UTF8String], -1, SQLITE_TRANSIENT);

// 绑定占位符

sqlite3_bind_text(stmt, 3, [theData.weiDu UTF8String], -1, SQLITE_TRANSIENT);

// 绑定主键integer

sqlite3_bind_int(stmt, 3, (int)theData.integer);

// 执行预编译指针

sqlite3_step(stmt);

// 销毁预编译指针

sqlite3_finalize(stmt);

}

// 查询数据

-(NSMutableArray *)dataArray

{

// 格式:select *from 表名

const char *sql = "select *from diTu";

// 预编译指针

sqlite3_stmt *stmt;

// 绑定预编译指针

sqlite3_prepare_v2(DB, sql, -1, &stmt, nil);

NSMutableArray *arr = [NSMutableArray array];

while (sqlite3_step(stmt) == SQLITE_ROW)

{

diTu *room = [[diTu alloc]init];

room.integer = sqlite3_column_int(stmt, 0);

room.dizhi = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 1)];

room.jinDu = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 2)];

room.weiDu = [NSString stringWithUTF8String:(const char *)sqlite3_column_text(stmt, 3)];

[arr addObject:room];

}

// 销毁预编译指针

sqlite3_finalize(stmt);

return arr;

}

// 关闭数据库

-(void)closeDataBase

{

sqlite3_close(DB);

}

diTuView.h

#import@interface diTuview : UIView

@property(nonatomic,strong)UITextField *dizhiTf;

@property(nonatomic,strong)UITextField *jingduTf;

@property(nonatomic,strong)UITextField *weiduTf;

diTuView.m

-(instancetype)initWithFrame:(CGRect)frame

{

if (self = [super initWithFrame:frame])

{

[self addSubview:self.dizhiTf];

[self addSubview:self.jingduTf];

[self addSubview:self.weiduTf];

}

return self;

}

-(UITextField *)dizhiTf

{

if (!_dizhiTf)

{

_dizhiTf = [[UITextField alloc]initWithFrame:CGRectMake(30, 100, 200, 44)];

_dizhiTf.placeholder = @"请输入地址";

_dizhiTf.borderStyle = UITextBorderStyleRoundedRect;

}

return _dizhiTf;

}

-(UITextField *)weiduTf

{

if (!_weiduTf)

{

_weiduTf = [[UITextField alloc]initWithFrame:CGRectMake(30, 160, 200, 44)];

_weiduTf.placeholder = @"请输入纬度";

_weiduTf.borderStyle = UITextBorderStyleRoundedRect;

_weiduTf.keyboardType = UIKeyboardTypeNumberPad;

}

return _weiduTf;

}

-(UITextField *)jingduTf

{

if (!_jingduTf)

{

_jingduTf = [[UITextField alloc]initWithFrame:CGRectMake(30, 210, 200, 44)];

_jingduTf.placeholder = @"请输入经度";

_jingduTf.borderStyle = UITextBorderStyleRoundedRect;

_jingduTf.keyboardType = UIKeyboardTypeNumberPad;

}

return _jingduTf;

}

mapView.h

#import#import@interface mapView : UIView

@property(nonatomic,strong)UILabel *lab1;

@property(nonatomic,strong)UILabel *lab2;

@property(nonatomic,strong)UITextField *weidu;

@property(nonatomic,strong)UITextField *jingdu;

@property(nonatomic,strong)MKMapView *mapview;

mapView.m

-(instancetype)initWithFrame:(CGRect)frame

{

if (self = [super initWithFrame:frame])

{

[self addSubview:self.mapview];

[self addSubview:self.lab1];

[self addSubview:self.lab2];

[self addSubview:self.jingdu];

[self addSubview:self.weidu];

}

return self;

}

- (MKMapView *)mapview{

if (_mapview == nil)

{

_mapview = [[MKMapView alloc]initWithFrame:self.frame];

_mapview.mapType = MKMapTypeStandard;

_mapview.zoomEnabled = YES;

_mapview.scrollEnabled = YES;

_mapview.rotateEnabled = YES;

_mapview.showsUserLocation = YES;

}

return _mapview;

}

-(UILabel *)lab1

{

if (!_lab1)

{

_lab1 = [[UILabel alloc]initWithFrame:CGRectMake(10,60, 50, 44)];

_lab1.text  = @"纬度:";

}

return _lab1;

}

-(UILabel *)lab2

{

if (!_lab2)

{

_lab2 = [[UILabel alloc]initWithFrame:CGRectMake(200,60, 50, 44)];

_lab2.text  = @"经度:";

}

return _lab2;

}

-(UITextField *)weidu

{

if (!_weidu)

{

_weidu = [[UITextField alloc]initWithFrame:CGRectMake(50, 60, 150, 44)];

_weidu.placeholder = @"请输入纬度";

_weidu.borderStyle = UITextBorderStyleRoundedRect;

_weidu.keyboardType = UIKeyboardTypeNumberPad;

}

return _weidu;

}

-(UITextField *)jingdu

{

if (!_jingdu)

{

_jingdu = [[UITextField alloc]initWithFrame:CGRectMake(260, 60, 150, 44)];

_jingdu.placeholder = @"请输入经度";

_jingdu.borderStyle = UITextBorderStyleRoundedRect;

_jingdu.keyboardType = UIKeyboardTypeNumberPad;

}

return _jingdu;

}

Viewcon.m

@interface ViewController ()

{

NSMutableArray *array;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

[[loadData shardData]initData];

[[loadData shardData]createtable];

self.view.backgroundColor = [UIColor whiteColor];

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(click)];

// 初始化数组

array = [NSMutableArray new];

}

// 导航条右按钮点击方法

-(void)click

{

myViewController *my = [[myViewController alloc]init];

[self.navigationController pushViewController:my animated:YES];

}

// 表格

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{

return 100;

}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return array.count;

}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@""];

if (!cell)

{

cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@""];

}

diTu *room = array[indexPath.row];

cell.textLabel.text = [NSString stringWithFormat:@"%ld\n%@\n%@\n%@",room.integer,room.dizhi,room.weiDu,room.jinDu];

cell.textLabel.numberOfLines = 0;

return cell;

}

// 视图将要出现的方法

-(void)viewWillAppear:(BOOL)animated

{

// 初始化数据库

[[loadData shardData]initData];

// 将查询出来的数据赋值给数组

array = [[loadData shardData]dataArray];

// 关闭数据库

[[loadData shardData]closeDataBase];

// 刷新表格

[self.tableView reloadData];

}

// 删除数据库

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

// 初始化数据库

[[loadData shardData]initData];

// 调用数据库里面的删除方法,根据数组下标 找到每一行的主键值

[[loadData shardData]deleteData:[array[indexPath.row]integer]];

// 关闭数据库

[[loadData shardData]closeDataBase];

// 删除单元格内容

[array removeObject:array[indexPath.row]];

// 刷新表格

[self.tableView reloadData];

}

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

mapViewController *mapcom = [[mapViewController alloc]init];

mapcom.map = array[indexPath.row];

[self.navigationController pushViewController:mapcom animated:YES];

}

mapViewController.h

@property(nonatomic,strong)diTu *dt;


mapViewController.m

@interface myViewController ()

{

diTuview *dtview;

}

@end

@implementation myViewController

- (void)viewDidLoad {

[super viewDidLoad];

dtview = [[diTuview alloc]initWithFrame:self.view.frame];

dtview.backgroundColor = [UIColor whiteColor];

self.view = dtview;

dtview.dizhiTf.text = self.dt.dizhi;

dtview.weiduTf.text = self.dt.weiDu;

dtview.jingduTf.text = self.dt.jinDu;

if (dtview.dizhiTf.text.length<=0)

{

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemSave target:self action:@selector(save)];

}else

{

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(edit)];

}

}

-(void)save

{

diTu *room = [[diTu alloc]init];

room.dizhi = dtview.dizhiTf.text;

room.weiDu = dtview.weiduTf.text;

room.jinDu = dtview.jingduTf.text;

[[loadData shardData]initData];

[[loadData shardData]addData:room];

[[loadData shardData]closeDataBase];

[self.navigationController popViewControllerAnimated:YES];

}

-(void)edit

{

self.dt.dizhi = dtview.dizhiTf.text;

self.dt.weiDu = dtview.weiduTf.text;

self.dt.jinDu = dtview.jingduTf.text;

// 初始化数据库

[[loadData shardData]initData];

// 调用数据库修改方法

[[loadData shardData]changeData:self.dt];

// 关闭数据库

[[loadData shardData]closeDataBase];

[self.navigationController popViewControllerAnimated:YES];

}

mapViewCon.h

@property(nonatomic,strong)diTu *map;

mapViewCon.m

#import "mapViewController.h"#import#import#import "mapView.h"

@interface mapViewController ()

{

mapView *mapp;

}

@end

@implementation mapViewController

- (void)viewDidLoad {

[super viewDidLoad];

mapp = [[mapView alloc]initWithFrame:self.view.frame];

mapp.backgroundColor = [UIColor whiteColor];

self.view = mapp;

mapp.weidu.text = self.map.weiDu;

mapp.jingdu.text = self.map.jinDu;

NSLog(@"+++++___%@",mapp.weidu.text);

NSString *wei = mapp.weidu.text;

NSString *jin = mapp.jingdu.text;

CLLocationCoordinate2D center = {wei.intValue,jin.intValue};

// 设置地图显示的范围,

MKCoordinateSpan span;

// 地图显示范围越小,细节越清楚

span.latitudeDelta = 0.25;

span.longitudeDelta = 0.25;

// 创建MKCoordinateRegion对象,该对象代表了地图的显示中心和显示范围。

MKCoordinateRegion region = {center,span};

// 设置当前地图的显示中心和显示范围

[mapp.mapview setRegion:region animated:YES];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容