教你画中国地图和各省市地图

在做数据统计时,有时需要在对应地图上显示相关数据,例如足迹、医院数量等等,这里提供画中国地图(包括各个省),和各省地图(包括各个市)的代码
点击获取代码

网友根据下面步骤制作的其他省份plist数据 收集,目前已经提交git,可直接使用:
1、内蒙古
后续若有其他省份的数据,感谢分享(qq:978159546),方便其他人

效果如下:

步骤:

一、获取地图数据

如下链接获取
中国各省份绘制SVG地图数据

二、根据所需的数据,制作svg图

这里我给一个广东省的svg图

下载地址

双击svg图片,可以发现它对应代码

可以发现里面每个子视图(市)对应一个封闭路径,最后拼成一个广东省地图。

这里写一个简单的例子

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="1000" height="1000" version="1.1"
xmlns="http://www.w3.org/2000/svg">

<path d="M50 0 L0 100 L100 100 Z" />
<path d="M100 100 L200 100 L200 0 L100 0 Z" />

</svg>

把上段代码粘贴到文本编辑器中,保存格式为svg,可得到如下图

制作对应省份的svg地图

简单一点,参考广东省的代码,把其中广东省的数据换成对应省份的数据,即可得到对应省份的地图

这里增加下替换具体步骤:

1、拿到第一步获取的地图数据,里面有各个省份的数据
2、打开我第二步给的广东省svg图片,双击打开,你会看到下图

3、看到没,不知道怎么写的,就在这里面,去掉广东省的数据,然后把你需要的数据粘贴到框框里,一个path是一个地区,有备注的
4、全部替换完成,保存就完成自己的svg制作。

这里感谢简友Bye_leon
提供获取svg更为简便的方法,通过这个工具,选择自己需要的区域。
好处
1、直接就可以下载到需要的SVG图了,也就是说你可以省下第一,二步。
2、可以制作市县级地图

三、得到地图之后,如果没有其他需求,已经可以通过第三方显示了

SVGKit

四、把地图中的数据转成UIBezierPath,然后保存到本地

这样做的原因:

  • 地图基本不会变的,所以一次性生成数据文件并保存本地,以后直接读取文件即可
  • 可做对应的后续操作,例如点击后回调点击的区域名字

五、通过PaintCode工具,把上面生成的svg地图拖入下面区域,调整对应的开发语言

看到没:在代码区域已经生成了对应的UIBezierPath

六、把生成的 UIBezierPath存到一个数组中,并归档,生成guangDong.plist文件

注意:粘贴时,删除每个UIBezierPath对象的下面部分,这里在代码中统一配置

七、生成guangDongInfo.plist

这里面是什么呢?

我把制作广东省的这个文件代码粘贴出来就明白了

- (void)createInfo{
    
    NSMutableArray *dataArr = [[NSMutableArray alloc] init];
    
    CGRect rect1 = CGRectMake(0, 151.72, 60.14, 78.28);
    NSValue *value1 = [NSValue valueWithCGRect:rect1];
    NSDictionary *dic1 = @{
                           @"name":@"湛江",
                           @"index":@(1),
                           @"rect":value1
                           };
    [dataArr addObject:dic1];
    
    CGRect rect2 = CGRectMake(28.71, 118.79, 55.98, 57.21);
    NSValue *value2 = [NSValue valueWithCGRect:rect2];
    NSDictionary *dic2 = @{
                           @"name":@"茂名",
                           @"index":@(2),
                           @"rect":value2
                           };
    [dataArr addObject:dic2];
    
    CGRect rect3 = CGRectMake(68.32, 119.79, 45.14, 50.9);
    NSValue *value3 = [NSValue valueWithCGRect:rect3];
    NSDictionary *dic3 = @{
                           @"name":@"阳江",
                           @"index":@(3),
                           @"rect":value3
                           };
    [dataArr addObject:dic3];
    
    CGRect rect4 = CGRectMake(59.21, 92.41, 60.57, 39.81);
    NSValue *value4 = [NSValue valueWithCGRect:rect4];
    NSDictionary *dic4 = @{
                           @"name":@"云浮",
                           @"index":@(4),
                           @"rect":value4
                           };
    [dataArr addObject:dic4];
    
    CGRect rect5 = CGRectMake(98.39, 112.37, 51.89, 59.25);
    NSValue *value5 = [NSValue valueWithCGRect:rect5];
    NSDictionary *dic5 = @{
                           @"name":@"江门",
                           @"index":@(5),
                           @"rect":value5
                           };
    [dataArr addObject:dic5];
    
    CGRect rect6 = CGRectMake(71.48, 47.05, 63.37, 68.77);
    NSValue *value6 = [NSValue valueWithCGRect:rect6];
    NSDictionary *dic6 = @{
                           @"name":@"肇庆",
                           @"index":@(6),
                           @"rect":value6
                           };
    [dataArr addObject:dic6];
    
    CGRect rect7 = CGRectMake(114.33, 82.02, 41.48, 39.11);
    NSValue *value7 = [NSValue valueWithCGRect:rect7];
    NSDictionary *dic7 = @{
                           @"name":@"佛山",
                           @"index":@(7),
                           @"rect":value7
                           };
    [dataArr addObject:dic7];
    
    CGRect rect8 = CGRectMake(95.24, 13.48, 82.39, 73.38);
    NSValue *value8 = [NSValue valueWithCGRect:rect8];
    NSDictionary *dic8 = @{
                           @"name":@"清远",
                           @"index":@(8),
                           @"rect":value8
                           };
    [dataArr addObject:dic8];
    
    CGRect rect9 = CGRectMake(138.01, 66.96, 45.57, 59.48);
    NSValue *value9 = [NSValue valueWithCGRect:rect9];
    NSDictionary *dic9 = @{
                           @"name":@"广州",
                           @"index":@(9),
                           @"rect":value9
                           };
    [dataArr addObject:dic9];
    
    CGRect rect10 = CGRectMake(146.19, 115.58, 22.32, 25.28);
    NSValue *value10 = [NSValue valueWithCGRect:rect10];
    NSDictionary *dic10 = @{
                            @"name":@"中山",
                            @"index":@(10),
                            @"rect":value10
                            };
    [dataArr addObject:dic10];
    
    CGRect rect11 = CGRectMake(142.1, 129.24, 56.05, 28.25);
    NSValue *value11 = [NSValue valueWithCGRect:rect11];
    NSDictionary *dic11 = @{
                            @"name":@"珠海",
                            @"index":@(11),
                            @"rect":value11
                            };
    [dataArr addObject:dic11];
    
    CGRect rect12 = CGRectMake(167.65, 112.55, 40.55, 25.74);
    NSValue *value12 = [NSValue valueWithCGRect:rect12];
    NSDictionary *dic12 = @{
                            @"name":@"深圳",
                            @"index":@(12),
                            @"rect":value12
                            };
    [dataArr addObject:dic12];
    
    CGRect rect13 = CGRectMake(161.26, 100.06, 30.5, 20.61);
    NSValue *value13 = [NSValue valueWithCGRect:rect13];
    NSDictionary *dic13 = @{
                            @"name":@"东莞",
                            @"index":@(13),
                            @"rect":value13
                            };
    [dataArr addObject:dic13];
    
    CGRect rect14 = CGRectMake(133.49, 0, 78.37, 68.59);
    NSValue *value14 = [NSValue valueWithCGRect:rect14];
    NSDictionary *dic14 = @{
                            @"name":@"韶关",
                            @"index":@(14),
                            @"rect":value14
                            };
    [dataArr addObject:dic14];
    
    CGRect rect15 = CGRectMake(173.53, 65.56, 66.53, 66.96);
    NSValue *value15 = [NSValue valueWithCGRect:rect15];
    NSDictionary *dic15 = @{
                            @"name":@"惠州",
                            @"index":@(15),
                            @"rect":value15
                            };
    [dataArr addObject:dic15];
    
    CGRect rect16 = CGRectMake(191.33, 31.06, 56.05, 67.83);
    NSValue *value16 = [NSValue valueWithCGRect:rect16];
    NSDictionary *dic16 = @{
                            @"name":@"河源",
                            @"index":@(16),
                            @"rect":value16
                            };
    [dataArr addObject:dic16];
    
    CGRect rect17 = CGRectMake(219.11, 86.16, 54.18, 36.13);
    NSValue *value17 = [NSValue valueWithCGRect:rect17];
    NSDictionary *dic17 = @{
                            @"name":@"汕尾",
                            @"index":@(17),
                            @"rect":value17
                            };
    [dataArr addObject:dic17];
    
    CGRect rect18 = CGRectMake(235.97, 24.28, 66.96, 66.08);
    NSValue *value18 = [NSValue valueWithCGRect:rect18];
    NSDictionary *dic18 = @{
                            @"name":@"梅州",
                            @"index":@(18),
                            @"rect":value18
                            };
    [dataArr addObject:dic18];
    
    CGRect rect19 = CGRectMake(247.81, 73.44, 42.41, 39.11);
    NSValue *value19 = [NSValue valueWithCGRect:rect19];
    NSDictionary *dic19 = @{
                            @"name":@"揭阳",
                            @"index":@(19),
                            @"rect":value19
                            };
    [dataArr addObject:dic19];
    
    CGRect rect20 = CGRectMake(279.25, 54.23, 34.66, 33.8);
    NSValue *value20 = [NSValue valueWithCGRect:rect20];
    NSDictionary *dic20 = @{
                            @"name":@"潮州",
                            @"index":@(20),
                            @"rect":value20
                            };
    [dataArr addObject:dic20];
    
    CGRect rect21 = CGRectMake(274.73, 78.75, 45.57, 25.51);
    NSValue *value21 = [NSValue valueWithCGRect:rect21];
    NSDictionary *dic21 = @{
                            @"name":@"汕头",
                            @"index":@(21),
                            @"rect":value21
                            };
    [dataArr addObject:dic21];
    
    NSString *document = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    NSString *path = [document stringByAppendingPathComponent:@"guangdongName.plist"];
    BOOL isSucc = [NSKeyedArchiver archiveRootObject:dataArr toFile:path];
    if (isSucc) {
        NSLog(@"----成功");
    }else{
        NSLog(@"----失败");
    }
}

呐呐😋,走神了

八、生成以上两个文件之后,导出这两个文件,以后就再也不会跑第二遍生成了

image.png

显示包内容

即将大功告成,把这两个文件导入项目,然后使用我写的这个画地图的工具类即可画出你需要的地图。

好吧,我在最下面再给一次代码链接,有使用demo

点击这里

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

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    X先生_未知数的X阅读 15,932评论 3 118
  • 《七绝·慎交》(新韵) 温志龄 不容父母岂容人,生养操劳沐厚恩。 如此劣顽须远距,...
    碧野牧歌阅读 372评论 4 4
  • 什么是Rest Ful,普通的与服务器交互过程中,我们经常只使用PUT和GET这两种方式,在http中总共有8中请...
    最美下雨天阅读 253评论 0 0
  • 原创2016-12-12爱画画,扎堆儿798手绘网 总第1098期 编辑 /老王 每年的这个时候 全国各地的美术生...
    a7777阅读 1,310评论 0 0
  • 因果 佛学自因果之后的概念都是由此产生,只是佛教用轮回圆了自己的理论,但我觉得,世界万物的生灭是规律的一部分,死了...
    wnight阅读 403评论 0 1