項目中需要用到多種地圖铣猩,用戶可根據(jù)自己喜好來選擇不同地圖的使用,有高德地圖茴丰、百度地圖达皿、騰訊地圖天吓、系統(tǒng)自帶地圖、谷歌地圖這5種峦椰,如果不對其進行封裝整理失仁,使用起來非常麻煩,且重復代碼頗多们何,當然也是為了達到一種高逼格的效果萄焦,所以博主就優(yōu)雅地簡單封裝一下。
下面就來簡單介紹一下一些關(guān)鍵類冤竹,項目中主要的設(shè)計模式為Delegate:
1. GMMapManager----地圖管理類拂封,主要功能:注冊key、一些地圖的基本功能(放大鹦蠕、縮小冒签、添加覆蓋物等)、切換地圖類型
2. GMMapViewDelegate----地圖協(xié)議钟病,主要功能:所有遵守該協(xié)議的地圖都可實現(xiàn)GMMapManager里面的一些地圖的基本功能(放大萧恕、縮小、添加覆蓋物等)
3. GMAnnotationViewManager----標注物顯示的管理類肠阱,主要功能:定義一些標注物的基本屬性及創(chuàng)建標注物
4. GMAnnotationViewDelegate----標注物顯示協(xié)議票唆,主要功能:所有遵守該協(xié)議的標注都可實現(xiàn)GMAnnotationViewManager里的一些基本屬性的定義及創(chuàng)建
5. GMAnnotation----標注協(xié)議,主要功能:該協(xié)議也集合遵守了各種地圖的標注協(xié)議:MKAnnotation屹徘、BMKAnnotation走趋、MAAnnotation、QAnnotation噪伊,可攜帶標注物的基本信息
6. GMOverlay----覆蓋物協(xié)議簿煌,主要功能:該協(xié)議也集合遵守了各種地圖的覆蓋物協(xié)議:MKOverlay、BMKOverlay鉴吹、MAOverlay姨伟、QOverlay,可攜帶覆蓋物的基本信息
7. GMCircleDelegate----圓形覆蓋物協(xié)議豆励,主要功能:所有遵守該協(xié)議的圓形覆蓋物都可實現(xiàn)一些基本屬性的定義及創(chuàng)建
8. GMPolygonDelegate----多邊形覆蓋物協(xié)議夺荒,主要功能:所有遵守該協(xié)議的多邊形覆蓋物都可實現(xiàn)一些基本屬性的定義及創(chuàng)建
9. GMPolylineDelegate----線型覆蓋物協(xié)議,主要功能:所有遵守該協(xié)議的線型覆蓋物都可實現(xiàn)圓形覆蓋物的一些基本屬性的定義及創(chuàng)建
10. GMOverlayViewManager----覆蓋物管理類肆糕,主要功能:一些覆蓋物的基本屬性及創(chuàng)建標注物
11. GMOverlayViewDelegate----覆蓋物顯示協(xié)議般堆,主要功能:所有遵守該協(xié)議的覆蓋物都可實現(xiàn)GMOverlayViewManager里的一些基本屬性的定義及創(chuàng)建
此封裝主要還是體現(xiàn)一種設(shè)計模式在孝,項目還有很多缺陷以及值得優(yōu)化的地方诚啃,歡迎給出寶貴的建議及意見。
注:若運行代碼之后發(fā)現(xiàn)地圖顯示不出來私沮,可能是key值無效始赎,但不影響功能。
附上Demo地址:
https://git.oschina.net/github-18703763/SMMapSDK.git