1、下載iOS地圖SDK的最新版本

成都創(chuàng)新互聯(lián)公司專注于梁溪企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城開(kāi)發(fā)。梁溪網(wǎng)站建設(shè)公司,為梁溪等地區(qū)提供建站服務(wù)。全流程按需求定制制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
2、申請(qǐng)LBS密鑰(見(jiàn)第二部分)。
3、xCode新建工程
新建一個(gè) Single View Application 工程。注意:Language 選擇 Swift
4、工程配置
a.?引入地圖庫(kù)搜索庫(kù)
左側(cè)目錄中選中工程名,在 TARGETS-Build Phases- Link Binary With Libaries 中點(diǎn)擊“+”按鈕,在彈出的窗口中點(diǎn)擊“Add Other”按鈕,選擇解壓后的 MAMapKit.framework 文件添加到工程中。
搜索庫(kù)的添加方法同上。
b.引入AMap.bundle資源文件
AMap.bundle資源文件中存儲(chǔ)了定位、默認(rèn)大頭針標(biāo)注視圖等圖片,可利用這些資源圖片進(jìn)行開(kāi)發(fā)。
左側(cè)目錄中選中工程名,在右鍵菜單中選擇Add Files to “工程名”…,從 MAMapKit.framework-Resources 文件夾中選擇 AMap.bundle文件,并勾選“Copy items if needed”復(fù)選框,單擊“Add”按鈕,將資源文件添加到工程中。
c.引入系統(tǒng)庫(kù)
左側(cè)目錄中選中工程名,在TARGETS-Build Settings- Link Binary With Libaries中點(diǎn)擊“+”按鈕,在彈出的窗口中查找并選擇所需的庫(kù)(見(jiàn)下表),單擊“Add”按鈕,將庫(kù)文件添加到工程中。
說(shuō)明:
備注中,2D表示使用2D柵格地圖需要的系統(tǒng)文件,3D表示使用3D矢量地圖需要的系統(tǒng)文件、Search表示使用搜索庫(kù)需要的系統(tǒng)文件。
SystemConfiguration.framework、CoreTelephonySecurity.framework、Security.framework 是為了統(tǒng)計(jì)app信息使用。
d.Swift編譯配置
首先:新建橋接頭文件(放在工程路徑下),這里命名為 AMapDemoSwift-Bridging-Header.h,在該頭文件中import需要的庫(kù)文件,代碼如下:
#import MAMapKit/MAMapKit.h
#import AMapSearchKit/AMapSearchAPI.h
然后,左側(cè)目錄中選中工程名,在 TARGETS-Build Phases- Swift Compiler - Code Generation - Objective-C Briding Header 中輸入橋接文件的路徑
5、地圖的顯示
以3D矢量地圖SDK為例,進(jìn)行介紹。
在 ViewController.swift 中,繼承 MAMapViewDelegate 協(xié)議,在 viewDidLoad 方法中配置用戶Key,初始化 MAMapView 對(duì)象,并添加到 Subview中。代碼如下:
let APIKey = "8a1383b14466a8dbf362f44357c496c0"
class ViewController: UIViewController , MAMapViewDelegate{
var mapView:MAMapView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// 配置用戶Key
MAMapServices.sharedServices().apiKey = APIKey
// 初始化MAMapView
initMapView()
}
func initMapView(){
mapView = MAMapView(frame: self.view.bounds)
mapView!.delegate = self
self.view.addSubview(mapView!)
}
}
運(yùn)行程序,地圖顯示出來(lái)了,就是這樣簡(jiǎn)單~
第一部分 使用Swift語(yǔ)言開(kāi)發(fā)LBS應(yīng)用 1、下載iOS地圖SDK的最新版本 2、申請(qǐng)LBS密鑰(見(jiàn)第二部分)。 3、xCode新建工程 新建一個(gè) Single View Application 工程。注意:Language 選擇 Swift 4、工程配置 a.引入地圖庫(kù)搜索庫(kù) 左側(cè)目錄中選中工程名...
第一步:申請(qǐng)Key,用于搜索SDK。
提示:MapKit是不需要Key的,該key僅用于高德的iOS SDK搜索功能。
第二步:初始化MKMapView ,并添加到Subview。同時(shí),進(jìn)行定位,設(shè)置定位模式,在地圖上顯示定位點(diǎn)。
注意:
(1)MapKit中的定位(showUserLocation= YES),在回調(diào)中獲取的坐標(biāo)不用進(jìn)行坐標(biāo)偏轉(zhuǎn);若使用CLLocationManager方法進(jìn)行定位,需要進(jìn)行坐標(biāo)偏轉(zhuǎn)(參考附加內(nèi)容)。
(2)MapKit沒(méi)有申請(qǐng)定位權(quán)限,需在代碼中申請(qǐng)一下定位權(quán)限。
申請(qǐng)方法:在 info.plist中追加NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription字段。其中:
NSLocationWhenInUseUsageDescription表示應(yīng)用在前臺(tái)的時(shí)候可以搜到更新的位置信息。
NSLocationAlwaysUsageDescription表示應(yīng)用在前臺(tái)和后臺(tái)(suspend或terminated)都可以獲取到更新的位置數(shù)據(jù)。
代碼如下:
//申請(qǐng)定位權(quán)限
- (void) initLocation
{
if(nil == _locationManager)
{
_locationManager = [[CLLocationManager alloc] init];
}
if([[[UIDevice currentDevice] systemVersion] floatValue] = 8.0)
{
[_locationManager requestAlwaysAuthorization];
}
}
//初始化MapView
- (void) initMapView{
//構(gòu)造MKMapView
_mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 21, CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds))];
_mapView.delegate = self;
_mapView.showsUserLocation = YES;//顯示定位圖標(biāo)
[_mapView setUserTrackingMode:MKUserTrackingModeFollow];//設(shè)置定位模式
//將mapview添加到Subview中
[self.view addSubview:_mapView];
}
第三步:初始化主搜索對(duì)象AMapSearchAPI
構(gòu)造AMapSearchAPI對(duì)象,并設(shè)置搜索結(jié)果語(yǔ)言。(支持英文結(jié)果的搜索功能包括:POI搜索、逆地理編碼和地理編碼、輸入提示,能夠滿足基本的搜索功能)
//初始化AMapSearchAPI
- (void)initSearch
{
//構(gòu)造AMapSearchAPI
_search = [[AMapSearchAPI alloc] initWithSearchKey:APIKey Delegate:self];
_search.language = AMapSearchLanguage_en;//設(shè)置語(yǔ)言
}
第四步:構(gòu)造搜索對(duì)象,設(shè)置搜索參數(shù),發(fā)起查詢,在相應(yīng)的回調(diào)中進(jìn)行結(jié)果展示(如:POI查詢結(jié)果以大頭針標(biāo)注等等)。
以Demo中的POI查詢?yōu)槔赃x擇的輸入提示語(yǔ)為關(guān)鍵字
/* POI 搜索. */
- (void)searchPOIWithKey:(NSString *)key adcode:(NSString *)adcode
{
if (key.length == 0)
{
return;
}
//構(gòu)造POI搜索對(duì)象AMapPlaceSearchRequest
AMapPlaceSearchRequest *place = [[AMapPlaceSearchRequest alloc] init];
//設(shè)置關(guān)鍵字、
place.keywords = key;
place.requireExtension = YES;//設(shè)置成YES,返回信息詳細(xì),較費(fèi)流量
if (adcode.length 0)
{
place.city = @[adcode];
}
//發(fā)起查詢
[_search AMapPlaceSearch:place];
}
//回調(diào)中顯示結(jié)果
- (void)onPlaceSearchDone:(AMapPlaceSearchRequest *)request response:(AMapPlaceSearchResponse *)respons
{
if (respons.pois.count == 0)
{
return;
}
NSMutableArray *poiAnnotations = [NSMutableArray arrayWithCapacity:respons.pois.count];
[respons.pois enumerateObjectsUsingBlock:^(AMapPOI *obj, NSUInteger idx, BOOL *stop) {
[poiAnnotations addObject:[[POIAnnotation alloc] initWithPOI:obj]];
}];
/* 將結(jié)果以annotation的形式加載到地圖上. */
[_mapView addAnnotations:poiAnnotations];
/* 如果只有一個(gè)結(jié)果,設(shè)置其為中心點(diǎn). */
if (poiAnnotations.count == 1)
{
_mapView.centerCoordinate = [poiAnnotations[0] coordinate];
}
/* 如果有多個(gè)結(jié)果, 設(shè)置地圖使所有的annotation都可見(jiàn). */
else
{
[_mapView showAnnotations:poiAnnotations animated:NO];
}
}
本文題目:ioslbs開(kāi)發(fā),iosbste
路徑分享:http://chinadenli.net/article15/dsshdgi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站收錄、網(wǎng)站排名、ChatGPT、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)