Shape file在iOS app 里的應(yīng)用

前言:在網(wǎng)上搜到的關(guān)于Shape file 在iOS項(xiàng)目里的應(yīng)用的資料不是很多,在GitHub上也是搜到Python,JavaScript的相關(guān)內(nèi)容多一些。不過還是找到啦~

找到了以下兩種方法:

方法一:直接使用shape file 加上Pro.4.xcodeproj(可以在GitHub 下載),導(dǎo)入項(xiàng)目中使用。轉(zhuǎn)化為經(jīng)緯度,可直接draw到map上。

方法二:把Shape file轉(zhuǎn)化為KML格式,可直接在應(yīng)用中使用KML格式的文件,內(nèi)容類似XML


下面來具體介紹一下使用:
方法一:

Step1:參考自GitHub里grgcombs的代碼,點(diǎn)擊下載代碼。

Step2: 把后臺(tái)提供的一整個(gè)shape file添加到項(xiàng)目里。


Screen Shot 2018-04-02 at 10.29.21 AM.png

Step3:把SHP_FILENAME的名字改成“CyclingPath”,就是你導(dǎo)入的文件的名字。然后運(yùn)行發(fā)現(xiàn)我要覆蓋的圖層加載到大西洋上了 ??,沒關(guān)系,可以解決的!
Screen Shot 2018-04-02 at 12.03.28 PM.png

step4:解決圖層偏移的問題,打開.prj文件


Screen Shot 2018-04-02 at 12.04.13 PM.png

這里找對(duì)應(yīng)SVY21的EPSG坐標(biāo)系(關(guān)于EPSG坐標(biāo)系的常識(shí)大家可以在網(wǎng)上找來看看)

Screen Shot 2018-04-02 at 12.30.38 PM.png

把特殊投影加入代碼中:


Screen Shot 2018-04-02 at 12.10.54 PM.png

運(yùn)行~ 大功告成
主要是要能下載到GitHub的代碼,就能實(shí)現(xiàn)了~
這個(gè)代碼畫的是polygon,如果你想要畫polyline,自行改改代碼就行。

方法二:把shape文件轉(zhuǎn)化為KML文件,把KML文件加入項(xiàng)目中就可以輕松使用啦~

KML:KML(Keyhole Markup Language,Keyhole 標(biāo)記語言)最初是由Google 旗下的Keyhole 公司開發(fā)和維護(hù)的一種基于XML 的標(biāo)記語言,利用XML 語法格式描述地理空間數(shù)據(jù)(如點(diǎn)、線、面、多邊形和模型等),適合網(wǎng)絡(luò)環(huán)境下的地理信息協(xié)作與共享。2008 年4月,KML的最新版本2.2 被OGC 宣布為開放地理信息編碼標(biāo)準(zhǔn),并改由OGC 維護(hù)和發(fā)展。

在網(wǎng)上有很多工具可以把shape文件轉(zhuǎn)化為KML文件,也可以自己寫Python來轉(zhuǎn)換,或者直接叫后臺(tái)轉(zhuǎn)換好了再給你
嘻嘻 ∠( ? 」∠)_

因?yàn)轫?xiàng)目里使用的是Google map, 配合用自家的KML格式文件配合使用,再方便不過啦~對(duì)應(yīng)的類都封裝好了
可參考Google Maps APIs Documentation

let parser = GMUKMLParser(url: url)
parser.parse()
 let renderer = GMUGeometryRenderer(map: weakSelf.mapView, geometries: parser.placemarks, styles: parser.styles)
renderer.render()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容