教你畫中國地圖和各省市地圖

在做數據統計時,有時需要在對應地圖上顯示相關數據,例如足跡、醫院數量等等,這里提供畫中國地圖(包括各個?。?,和各省地圖(包括各個市)的代碼
點擊獲取代碼

網友根據下面步驟制作的其他省份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

點擊這里

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網絡請求組件 FMDB本地數據庫組件 SD...
    陽明AGI閱讀 16,003評論 3 119
  • 《七絕·慎交》(新韻) 溫志齡 不容父母豈容人,生養操勞沐厚恩。 如此劣頑須遠距,...
    碧野牧歌閱讀 421評論 4 4
  • 什么是Rest Ful,普通的與服務器交互過程中,我們經常只使用PUT和GET這兩種方式,在http中總共有8中請...
    最美下雨天閱讀 277評論 0 0
  • 原創2016-12-12愛畫畫,扎堆兒798手繪網 總第1098期 編輯 /老王 每年的這個時候 全國各地的美術生...
    a7777閱讀 1,331評論 0 0
  • 因果 佛學自因果之后的概念都是由此產生,只是佛教用輪回圓了自己的理論,但我覺得,世界萬物的生滅是規律的一部分,死了...
    wnight閱讀 457評論 0 1