【iOS地圖開發】巧妙打造中英文全球地圖

地圖開發的同窗們常常遇到這樣的問題,國內版地圖開發,用高德或者百度就好了。可是,國外的地圖怎麼辦?這裏告訴你們,若是利用iOS地圖,打造中英文的,國內國外都能用的,全球地圖。android

製做全英文地圖的展現並不困難,可是要製做全英文的數據檢索列表,全英文的信息窗口,你就沒辦法了吧。告訴你,我有妙招!使用iOS自帶的MapKit來展現全球英文底圖,結合上高德API的中英文檢索功能,就能打造POI數據最豐富,英文展現全方位的純英文地圖啦!看看截圖,是否是渾然天成?ios

-------------------------------------------------------------------------------------------------------------------------------git

下面開始詳解純英文地圖的步驟啦,助力程序員與國際APPs接軌!程序員

 

第一步:申請Keygithub

先申請高德的KEYhttp://lbs.amap.com/console/key/api

一、填寫應用名稱ide

二、綁定服務選擇IOS平臺ui

三、輸入bundle id:將Xcode切換到General標籤,便可查看Bundle Identifier編碼

四、點擊獲取KEYspa

 

第二步、新建地圖工程

在xCode裏,新建一個 Single View Application工程,而且進行配置。

在高德官網有地圖配置的詳細說明,這裏我就很少說了。查看:http://lbs.amap.com/api/ios-sdk/guide/mapview/

  

第三步、添加MKMapView

一、在xCode裏選擇Build Phases標籤,點開Link Binary With Libraries,再點加號。

二、在彈出來的搜索框裏搜索Mapkit

三、選擇iOS 8.0-->MapKit.framework,最後點擊add便可。

 

第四步、申請定位權限

info.plist中追加NSLocationAlwaysUsageDescription或者NSLocationAlwaysUsageDescription字段。

NSLocationWhenInUseUsageDescription表示應用在前臺的時候能夠搜到更新的位置信息;NSLocationAlwaysUsageDescription表示應用在前臺和後臺(suspend或terminated)均可以獲取到更新的位置數據。

因此我仍是建議NSLocationAlwaysUsageDescription這種方便的模式,哈哈。

 

 1.在工程的 Supporting Files中選擇 plist文件
 2.點擊+號,輸入字段 NSLocationAlwaysUsageDescription
 
 3.按回車,便可完成添加字段

 

第五步、初始化Mapview

高德的座標系是國內標準座標(GCJ-02,又稱火星座標),國際上通常是採用GPS座標(WGS-84),因此大多數國際應用在中國使用時,須要進行座標轉換。

好在蘋果的MapKit用的是高德的地圖,showUserLocation= YES,座標已是GCJ-02的啦,能夠直接使用~

(PS:不建議使用CLLocationManager定位管理類,它返回的座標是GPS座標,必須進行座標轉換,很麻煩。)
 
//申請定位權限  
-  (void) initLocation  
{  
     if(nil == _locationManager)  
     {  
         _locationManager = [[CLLocationManager alloc] init];  
    }    
  
    if([[[UIDevice  currentDevice] systemVersion] floatValue] >= 8.0)  
     {  
         [_locationManager requestAlwaysAuthorization];  
     }  
} 
//初始化MapView - (void) initMapView{
//構造MKMapView _mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 21, CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds))]; _mapView.delegate = self; _mapView.showsUserLocation = YES;//顯示定位圖標 [_mapView setUserTrackingMode:MKUserTrackingModeFollow];//設置定位模式
//將mapview添加到Subview中 [self.view addSubview:_mapView]; }

 

第六步、初始化AMapSearchAPI

構造AMapSearchAPI對象,設置搜索結果語言爲英文 AMapSearchLanguage_en
這步很是重要喔!必需要設置成英文,才能巧妙地讓POI搜索、逆地理編碼和地理編碼、輸入提示等,都變成純英文喔。
 
//初始化AMapSearchAPI  
-  (void)initSearch  
{  
     //構造AMapSearchAPI  
     _search = [[AMapSearchAPI alloc] initWithSearchKey:APIKey Delegate:self];  
     _search.language = AMapSearchLanguage_en;//設置語言  
}

 

第七步、寫個搜索demo來看看

以一個普通的POI檢索爲例,當檢索英文關鍵詞時,出來純英文的搜素建議;搜索結果也用英文來展現。

/*  POI 搜索.  */  
-  (void)searchPOIWithKey:(NSString *)key adcode:(NSString *)adcode  
{  
     if (key.length == 0)
     {
           return;  
     }  
//構造POI搜索對象AMapPlaceSearchRequest AMapPlaceSearchRequest *place = [[AMapPlaceSearchRequest alloc] init];
//設置關鍵字 place.keywords = key; place.requireExtension = YES;//設置成YES,返回信息詳細,較費流量 if (adcode.length > 0) { place.city = @[adcode]; } //發起查詢 [_search AMapPlaceSearch:place]; } //回調中顯示結果 - (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]]; }];
/* 將結果以annotation的形式加載到地圖上. */ [_mapView addAnnotations:poiAnnotations];
/* 若是隻有一個結果,設置其爲中心點. */ if (poiAnnotations.count == 1) { _mapView.centerCoordinate = [poiAnnotations[0] coordinate]; }
/* 若是有多個結果, 設置地圖使全部的annotation均可見. */ else { [_mapView showAnnotations:poiAnnotations animated:NO]; } }

 

最後,想象你是一個外國人,把你的手機語言改爲English,這時,英文底圖就出現了!

其實若是用高德iOS SDK,也有英文底圖,但得調用SDK啊,很麻煩呢。若是原本就是給在中國的外國人看,還不如直接調用iOS的MapKit呢~

你要開發安卓版英文地圖的話,那固然直接用高德Android SDK就行了啦~

 

最後,這裏是所有源碼下載:https://github.com/autonaviapi/HelloAmapForEnglish

 

 

你們快動手試試吧~~ 真的是一秒鐘國際範兒的趕腳~ 再看一遍截圖~

 

-------------------------------------------------------------------------------------------------------------------------------

關於爲何要選擇高德API:

一、蘋果MapKit原本就是調用的高德地圖,看右下角版權信息,是否是有個灰色的高德地圖logo,因此不存在座標轉換的問題,嗯,渾然天成;

二、高德推出了全球定位,全英文地圖,全英文檢索(全國僅此一家!)等潮流產品,各類很是適合「國際範兒」這個命題。

-------------------------------------------------------------------------------------------------------------------------------

相關文章
相關標籤/搜索