在做數據統計時,有時需要在對應地圖上顯示相關數據,例如足跡、醫院數量等等,這里提供畫中國地圖(包括各個?。?,和各省地圖(包括各個市)的代碼
點擊獲取代碼
網友根據下面步驟制作的其他省份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、可以制作市縣級地圖
三、得到地圖之后,如果沒有其他需求,已經可以通過第三方顯示了
四、把地圖中的數據轉成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
顯示包內容