1. 程式人生 > >IOS高德地圖使用說明

IOS高德地圖使用說明

關於高德地圖

1目的

為了更方便的使用,以及避免犯錯

2 整合步驟

2.1 申請金鑰

2.2 配置環境(重點)

高德地圖提供了兩種配置方式:

一、 手動配置

即手動匯入所需要的庫檔案,以及進行相關的配置操作。手動配置相對麻煩,作簡要說明,詳見官方文件。

1. 引入地相簿

MAMapKit.framework 檔案新增到工程中。

2. 引入AMap.bundle資原始檔

AMap.bundle資原始檔中儲存了定位、預設大頭針標註檢視等圖片,可利用這些資源圖片進行開發。
左側目錄中選中工程名,在右鍵選單中選擇Add Files to “工程名”…,從MAMapKit.framework->Resources檔案中選擇AMap.bundle檔案,並勾選“Copy items if needed”複選框,單擊“Add”按鈕,將資原始檔新增到工程中。
資原始檔不是必須的,可以自定義資源圖片。

3. 引入系統庫

1.  UIKit.framework 2D、3D、Search
2.  Foundation.framework    2D、3D、Search
3.  CoreGraphics.framework  2D、3D、Search
4.  QuartzCore.framework    2D、3D
5.  OpenGLES.framework  3D
6.  CoreLocation.framework  2D、3D
7.  CoreTelephony.framework 2D、3D、Search
8.  SystemConfiguration.framework   2D、3D、Search
9.  libz.dylib  2D、3D、Search
10. libstdc++6.09.dylib 2D、3D、Search
11. Security.framework  2D、3D

4. 環境配置

在TARGETS->Build Settings->Other Linker Flags 中新增-ObjC。
V2.3.0(含)之前版本不支援arm64,需在 TARGETS->Build Settings->Architectures 點出選擇框,選擇 “Other”,將預設值修改為 $(ARCHS_STANDARD_32_BIT)。

二、 自動配置,即使用cocoaPods去新增庫。

CocoaPods相對簡單,自動管理第三方庫。不需要額外的其他配置即可使用。配置詳見官方文件。
編輯Podfile內容如下:
platform :ios, ‘7.0’ #手機的系統
pod ‘AMap3DMap’ #3D地圖SDK
#pod ‘AMap2DMap’ #2D地圖SDK (2D和3D不能同時使⽤用)
pod ‘AMapSearch’ #搜尋服務SDK
在PodFile所在的資料夾下輸入命令:
pod install

3 地圖的使用

3.1 基礎地圖

預設的Logo為藍色字樣的“高德地圖”,顯示在地圖的左下方。地圖Logo不能移除,但可通過MAMapView.logoCenter屬性來調整Logo的顯示位置。在ViewController.m的viewDidLoad方法新增如下如下:

_mapView.logoCenter = CGPointMake(CGRectGetWidth(self.view.bounds)-55, 450);

3.1.2 指南針

指南針預設是開啟狀態,顯示在地圖的右上角。
通過MAMapView的showsCompass屬性用來控制指南針的可見性。compassOrigin屬性可改變指南針的顯示位置。在ViewController.m的viewDidLoad方法新增如下如下:

_mapView.showsCompass= YES; // 設定成NO表示關閉指南針;YES表示顯示指南針
_mapView.compassOrigin= CGPointMake(_mapView.compassOrigin.x, 22); //設定指南針位置

3.1.3 比例尺

比例尺表示地圖上兩點間距離與實際與之對應的兩點距離的比,在不同的縮放級別下,比例尺代表的長度也是不同的。
在iOS SDK中,比例尺預設顯示在地圖的左上角。MAMapView的showScale屬性用來控制比例尺的可見性,scaleOrigin屬性用來改變比例尺的顯示位置。在ViewController.m的viewDidLoad方法新增如下程式碼:

_mapView.showScale= YES;  //設定成NO表示不顯示比例尺;YES表示顯示比例尺
_mapView.scaleOrigin= CGPointMake(_mapView.scaleOrigin.x, 22);  //設定比例尺位置

3.1.4 手勢控制

縮放手勢

_mapView.zoomEnabled = NO;    //NO表示禁用縮放手勢,YES表示開啟

平移(滑動)手勢

_mapView.scrollEnabled = NO;    //NO表示禁用滑動手勢,YES表示開啟

旋轉手勢(3D)

_mapView.rotateEnabled= NO;    //NO表示禁用旋轉手勢,YES表示開啟

傾斜手勢(3D)

_mapView.rotateCameraEnabled= NO;    //NO表示禁用傾斜手勢,YES表示開啟

3.1.5 地圖操作

地圖縮放
地圖的縮放級別的範圍是[3-19],呼叫MAMapView的setZoomLevel方法設定地圖的縮放級別,用來縮放地圖。示例程式碼如下:

[_mapView setZoomLevel:17.5 animated:YES];

地圖平移

[_mapView setCenterCoordinate:center animated:YES];

地圖旋轉(3D)
旋轉角度的範圍是[0.f 360.f],以逆時針為正向。示例程式碼如下:

[_mapView setRotationDegree:60.f animated:YES duration:0.5];

地圖傾斜(3D)
傾斜角度範圍為[0.f, 45.f],示例程式碼如下:

[_mapView setCameraDegree:30.f animated:YES duration:0.5];

3.1.6 地圖截圖

CGRect inRect = CGRectMake(80,142,160,284);
UIImage *screenshotImage = [_mapView takeSnapshotInRect:inRect] ;

3.2 衛星圖

//顯示衛星地圖
_mapView.mapType = MAMapTypeSatellite;

說明:地圖型別切換隻需將地圖型別設定成相應的型別(MAMapTypeStandard/MAMapTypeSatellite/MAMapTypeStandardNight)。

3.3 實時交通圖

顯示實時交通路況的程式碼如下:
_mapView.showTraffic= YES;

3.4 熱力圖圖層

3.5 自定義圖層

3.6 地Annotation(單點覆蓋物)(重點)

3.6.1 大頭針標註

地圖標註在開發中經常使用,並且地圖標註樣式靈活,需要著重注意。
在地圖的基礎,新增地圖標註,需要兩步
1. 建立地圖標註MAPointAnnotation,新增地圖標註[_mapView addAnnotation:annotation];
2. mapView:viewForAnnotation:回撥函式,設定標註樣式。
這裡新增標註的代理方法,也可以把當前位置當做標註一樣去顯示出來,比較靈活。

3.6.2 自定義標註

自定義標註圖示(基於大頭針標註,可以自定義樣式)

(1) 新增標註資料物件,可參考大頭針標註的步驟(1)。
(2) 匯入標記圖片檔案到工程中。這裡我們匯入一個名為restauant.png的圖片檔案。
(3) 在 協議的回撥函式mapView:viewForAnnotation:中修改MAAnnotationView對應的標註圖片。
關鍵程式碼:

annotationView.image = [UIImage imageNamed:@"restaurant"];
//設定中⼼心點偏移,使得標註底部中間點成為經緯度對應點
annotationView.centerOffset = CGPointMake(0, -18);

自定義氣泡

氣泡在iOS中又稱為callout,它由背景和氣泡內容構成。
(1) 新建自定義氣泡類CustomCalloutView,繼承UIView。
(2) 在CustomCalloutView.h中定義資料屬性,包含:圖片、商戶名和商戶地址。
(3) 在CustomCalloutView.m中重寫UIView的drawRect方法,繪製彈出氣泡的背景。
(4) 定義用於顯示氣泡內容的控制元件,並新增到SubView中。
(5) 在CustomCalloutView.m中給控制元件傳入資料。
詳見官方文件。

3.7 幾何圖形

3.8 地形圖圖層

3.9 熱力圖功能

3.10 自定義覆蓋物

3.11 OpenGL繪製功能

3.12 定位功能

3.12.1 簡介

iOS系統不允許使用第三方定位,地圖SDK的定位方法是對iOS系統定位的二次封裝。通過封裝。可將原始的定位點無偏差的顯示在高德地圖上。同時,可自定義定點陣圖標和精度圈的樣式。

3.12.2 注意

1)2.3.0(含)之前版本的SDK,在iOS8中無法定位,請參考:iOS8無法定位的解決方案。
2)2.4.0(含)以後版本需在info.plist中追加NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription欄位.其中:
NSLocationWhenInUseUsageDescription表示應用在前臺的時候可以搜到更新的位置資訊。
NSLocationAlwaysUsageDescription表示應用在前臺和後臺(suspend或terminated)都可以獲取到更新的位置資料。
特別注意:在plist檔案中加上之後如果無效,請在info頁面加上

3.12.3 開啟定位

_mapView.showsUserLocation = YES; //YES 為開啟定位,NO為關閉定位
當位置更新時,會進定位回撥,通過回撥函式,能獲取到定位點的經緯度座標:

-(void)mapView:(MAMapView*)mapView didUpdateUserLocation: (MAUserLocation*)userLocation updatingLocation:(BOOL)updatingLocation

3.12.4 定點陣圖層

定位的樣式是可以更改的,方式與標註類似。

3.12.5 後臺定位

app退到後臺,且位置不變動時,也不會被系統掛起,可持久記錄位置資訊。

1.新增程式碼。

_mapView.pausesLocationUpdatesAutomatically = NO;

2.工程配置。

a)左側目錄中選中工程名,開啟 TARGETS->Capabilities->Background Modes
b)在 Background Modes中勾選 Location updates

3.13 檢索功能

注意事項

高德地圖暫不支援多地圖例項,需要共用一個mapView。

參考資料

相關推薦

IOS地圖使用說明

關於高德地圖 1目的 為了更方便的使用,以及避免犯錯 2 整合步驟 2.1 申請金鑰 2.2 配置環境(重點) 高德地圖提供了兩種配置方式: 一、 手動配置 即手動匯入所需要的庫檔案,以及進行相關的配置操作。手動配置相對

iOS 地圖設定中心點,獲取中心點的詳細位置和經緯度

先在下面附上逆地理成功之後的圖片 下面附上具體的幾步程式碼實現: 1.通過傳入的經緯度進行逆地理編碼,進行逆地理編碼初始化,然後發起逆地理編碼搜尋。(self.search 這個是定義的 AMapSearchAPI 的物件) - (void)setGegeo:(CLL

IOS 地圖導航

引言 高德地圖導航包還是淺顯易懂,筆者在這裡做點總結,實際操作一遍。 導航分為模擬導航和實時導航兩種,兩種導航都包括語音提示、停止導航、暫停或繼續導航功能。通過模擬導航,使用者可預先了解出行路線,直觀掌握沿途每一個特別路口的交通狀況,讓出行更從容。 算路成

iOS地圖定位.自定義標註.搜尋.分類展示(排版)

一.先前準備 4.0 .jpg 這就是公司的需求,上面欄目點選重新整理地圖標註,類目二根據類目一的變化而變化,標註可點選進個人資料,點選下單也可跳轉. 1.0.png 1.2).在用到的vc匯入,還有遵循協議<MAMapViewDelegate>,這裡還要謝謝簡書一位仁兄,因為最後兩個

iOS地圖 初始化 重定義比例尺

使用的為高德地圖 遷移到自己專案中也根據官方文件來引入高德地圖 但是2D地圖的API中沒有直接設定地圖比例尺的大小,而預設的MAMapView的建立所展示的5個點的位置由於地圖比例尺的不合適,會產生重疊,怎樣來調整初始化時候地圖比例尺的問題 API中有寫道  REGION

ios地圖流程

       寫個高德地圖的用法,我會了,自然會告訴你們。我不會,你們要是會,也發個部落格,讓我們百度一下,我在網上搜了一堆關於高德地圖的,全都不詳細,我就按我的理解寫一篇,如果能按照我的看明白,希望

ios地圖,地理編碼,基於swift 4.0

最近在做專案中,需要用到高德地圖的,地理編碼的功能。但是搜了一下部落格,都是反地理的編碼的文章。而高德的文件,都藏的比較深。下面就直接寫程式碼了。 import UIKit class AmpSea

iOS 地圖反向地理編碼 onReGeocodeSearchDone 不回撥

//實現逆地理編碼的回撥函式 - (void)onReGeocodeSearchDone:(AMapReGeocodeSearchRequest *)request response:(AMapReGeocodeSearchResponse *)response

iOS地圖WMS服務&Mapbox地圖WMS服務

網路地圖服務(WMS)      網路地圖服務(WMS)利用具有地理空間位置資訊的資料製作地圖。其中將地圖定義為地理資料可視的表現。能夠根據使用者的請求返回相應的地圖(包括PNG,GIF,JPEG等柵格形式或者是SVG和WEB CGM等向量形式)。WMS支援網路協議HTTP,所支

iOS unity 互相呼叫載入地圖

需要增加   mapView。delegate = self   這是一種設計模式,有的人稱為代理,有的人稱為委託,比如有A,B兩個控制器,由A可以push到B,B可以pop回A,現在有一種情況,A中有一個label,需要從B中獲取資料,顯示到A的label裡,這時就可以用代理了,在B中寫一個

關於地圖iOS中呼叫騎行導航

SDK中實時導航時可以進行不同的路線規劃,這塊又跳到各自的路徑規劃頁面,或者串聯不起來。高德給的demo中也沒有騎行導航的相關示例,網上也查不到相關有用的資訊,所以只能自己深入檢視SDK,發現如果想要實現在移動端的騎行導航,步驟如下: 1、獲取起始點和終點的經緯度座標

iOS定位服務與地圖應用開發:地圖開發

2014-07-09 之前工作在一家智慧裝置的公司,做過一個親友定位監控系統,類似現在比較流行的360兒童手環。所以這裡簡單介紹定位與地圖。 1 定位服務 iOS裝置提供三種不同定位途徑,蜂窩式行動電話基站定位;WiFi定位,通過查詢一個WiFi路由器的地理位置資訊,比較省電;GPS

iOS呼叫地圖導航

    在iOS開發地圖模組中,有需要用到導航的功能,尤其類似一些送快遞、外賣等軟體,除了需要展示路線到地圖中,還需要有一個導航按鈕。一般導航功能分兩類:一類是在本APP內部呼叫高德API的導航頁面,即在APP內部整合導航模組,此類導航頁面可以自己定製介面,但基本功能都是呼叫

ios 一步一步學會自定義地圖吹出框(CalloutView)-->(百度地圖地圖,google地圖)

前言 在ios上邊使用地相簿的同學肯定遇到過這樣的問題:吹出框只能設定title和subtitle和左右的view,不管是百度地圖還是高德地圖還是自帶的google地圖,只提供了這四個屬性,如果想新增更多的view,只能自定義。可是,類庫只能看到.h檔案,.m都看不

iOS系統地圖的使用

重要的寫在前面,整理了一下系統高德地圖的一般使用,相關demo請點選demo連結 ,已經更新了Swift版本。 1. 地圖(MKMapView)的使用 self.mapView.mapType =

iOS地圖MAMapKit的使用:地圖顯示、新增大頭針、導航、定位功能介紹

4、 引入高德地圖依賴系統庫檔案: 說明: 1.備註中,2D表示使用2D柵格地圖需要的系統檔案,3D表示使用3D向量地圖需要的系統檔案、Search表示使用搜索庫需要的系統檔案,3D(V3.X.X)表示3D向量地圖V3.0.0以後版本需要新增的庫。 2.SystemConfiguration.f

React Native填坑之旅 -- 使用iOS原生檢視(地圖

在開發React Native的App的時候,你會遇到很多情況是原生的檢視元件已經開發好了的。有的是系統的SDK提供的,有的是第三方試圖元件,總之你的APP可以直接使用的原生檢視是很多的。React Native提供了一套完善的機制,你可以非常簡單的用來包裝已有

ios 一步一步學會自定義地圖吹出框(CalloutView)-->(百度地圖地圖,google地圖)...

前言 在ios上邊使用地相簿的同學肯定遇到過這樣的問題:吹出框只能設定title和subtitle和左右的view,不管是百度地圖還是高德地圖還是自帶的google地圖,只提供了這四個屬性,如果想新增更多的view,只能自定義。可是,類庫只能看到.h檔案,.m都看不到

iOS程式設計師之地圖SDK

高德SDK 最近專案中需要定位客戶位置,要滿足地址搜尋,長按地圖新增,同時大頭針還要能移動的需求,這裡整理下,希望幫助有需要的人 1.新增地圖 // 地圖 _mapView = [[MAMapView alloc] initWithFrame:CGRect

判斷一個座標點是否在一個無規則的多邊形內 (iOS定位服務與地圖應用開發:地圖開發)

m 之前工作在一家智慧裝置的公司,做過一個親友定位監控系統,類似現在比較流行的360兒童手環。所以這裡簡單介紹定位與地圖。 1 定位服務 iOS裝置提供三種不同定位途徑,蜂窩式行動電話基站定位;WiFi定位,通過查詢一個WiFi路由器的地理位置資訊,比較省電;GPS衛星定