【高德API】如何利用MapKit开发全英文检索的iOS地图

原文:【高德API】如何利用MapKit开发全英文检索的iOS地图

制作全英文地图的展示并不困难,但是要制作全英文的数据检索列表,全英文的信息窗口,你就没办法了吧。告诉你,我有妙招!使用iOS自带的MapKit来展示全球英文底图,结合上高德API的中英文检索功能,就能打造POI数据最丰富,英文展示全方位的纯英文地图啦!看看截图,是不是浑然天成?

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

下面开始详解纯英文地图的步骤啦,助力程序员与国际APPs接轨!

 

第一步:申请Key

先申请高德的KEY:http://lbs.amap.com/console/key/

1、填写应用名称

2、绑定服务选择IOS平台

3、输入bundle id:将Xcode切换到General标签,即可查看Bundle Identifier

4、点击获取KEY

 

第二步、新建地图工程

在xCode里,新建一个 Single View Application工程,并且进行配置。

在高德官网有地图配置的详细说明,这里我就不多说了。查看:http://lbs.amap.com/api/ios-sdk/guide/mapview/

  

第三步、添加MKMapView

1、在xCode里选择Build Phases标签,点开Link Binary With Libraries,再点加号。

2、在弹出来的搜索框里搜索Mapkit。

3、选择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:

1、苹果MapKit本来就是调用的高德地图,看右下角版权信息,是不是有个灰色的高德地图logo,所以不存在坐标转换的问题,嗯,浑然天成;

2、高德推出了全球定位,全英文地图,全英文检索(全国仅此一家!)等潮流产品,各种非常适合“国际范儿”这个命题。

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

 

 

时间: 2024-09-11 22:45:32

【高德API】如何利用MapKit开发全英文检索的iOS地图的相关文章

【高德地图API】那些年我们一起开发的APP—即LBS应用模式分享

原文:[高德地图API]那些年我们一起开发的APP-即LBS应用模式分享  摘要:利用地图API都能做些什么应用呢?应用商店里所有的分类,都可以结合上LBS来丰富应用.除了传统的生活服务应用,还有新潮的AR实景,可穿戴设备,甚至炫酷的游戏.那么,LBS已经做了哪些事情呢?本文详细介绍了LBS应用模式.一起来细数吧,那些年我们一起开发的APP. (在文章结尾处,有2014LBS应用大赛的信息, 不仅可以写代码拿大奖,提交创意也有奖品呢.快去参加吧.)   一.导航类 苹果地图和谷歌地图,在中国的地

高德API+Python帮你解决租房问题

项目简介:编写Python脚本爬取某租房网站的房源信息,利用高德的 js API 在地图上标出房源地点,划出距离工作地点1小时内可到达的范围,附上公交路径规划功能查看不同路径的用时. 本教程由ekCit发布在实验楼,完整教程及在线练习地址:高德API+Python解决租房问题,可以直接在教程中下载代码使用demo. 一.项目介绍 1. 项目背景 来自一段租房血泪史(夸张):事情是这样的,笔者是接着念大四准备考研,而室友是应届毕业在找工作,说白了就是都没有钱,于是打算合租.因为穷所以不可能找有门店

How to Use HTML5 FUll Screen API(如何使用HTML5全屏接口)

原文链接:http://www.sitepoint.com/use-html5-full-screen-api/        如果你不太喜欢变化太快的东西,那么web开发可能不适合你.我曾在2012年末有写过Full-Screen API的介绍,并且当时就提到其实现细节可能会被修改,但是没有想到一年后我需要重写!本篇的所讲的内容也许不是最新的,但是非常感谢David Storey帮我重点归纳出近期技术方面的变化....        什么是Full-Screen API?        此AP

JavaMail学习笔记(二)、JavaMail API简介和配置开发环境

一.JavaMail API 简介        JavaMail API是Sun公司为方便Java开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发包,它支持一些常用的邮件协议,如:SMTP.POP3.IMAP和MIME等.开发人员使用JavaMail API编写邮件处理软件时,无须考虑邮件协议底层的实现细节,只要调用JavaMail开发包中相应的API类就可以了.JavaMail API封装在一个名mail.jar的文件中,它是开发JavaMail应用程序时所必须使用的核心jar

【高德地图API】一句话搞定webmap(一)——轻地图组件

原文:[高德地图API]一句话搞定webmap(一)--轻地图组件 摘要: 遥想当年,在APP中加入LBS元素相当困难:要刻苦学习java,要刻苦学习iOS开发,要刻苦学习javascript-- 而如今,要制作一张地图真是越来越容易了!竟然只需要一句话,就可以打点,导航,定位,显示交通流量等. 让我们一起来轻松一下吧~     ------------------------------------华丽分割线-----------------------------------------  

API策略不再只是开发人员的事

那些认为API战略是属于开发人员的"书呆子"专利的IT运营团队将会惊讶的发现API在企业的整体战略重要性方面有多大的影响. 应用程序接口(API)是一种连接,通过提供一套工具和协议来描述某个程序应该如何同另一个程序交互.但近来,该定义已扩大到不只是指API本身的细节,也包括与其互连的协同服务. 亚马逊提供了一个最早的外部API战略用途,当它为那些希望在亚马逊网站中销售的书商和其他零售商提供了其电子商务引擎时."亚马逊从此不再只是一个零售商,而是在一个生态系统中占有一席之地的服

利用XML开发留言板简单的例子

xml XML是一种基于文本格式的元标记语言,它注重对数据结构和数据意义的描述,实现了数据内容和显示样式的分离(xml+xsl),而且是与平台无关的. 由于XML注重数据内容的描述,因而,对于数据的检索非常有意义,我们不会再象HTML那样,检索出与我们要求无关的信息. 另一方面,XML文件是数据的载体,利用XML作为数据库,不需要访问任何数据库系统,我们可以使用任意WEB技术来显示我们的数据,比如HTML,FlashMX 等. 由于世界各大计算机公司的积极参与,XML正日益成为基于互联网的数据格

Eclipse快速上手Hibernate--3. 利用XDoclet开发

    这篇文章是上两篇文章<Eclipse快速上手Hibernate--1. 入门实例>和<Eclipse快速上手Hibernate--2. 利用Hbm映射文件开发>的延续,主要说的是如何利用XDocletHbm映射文件产生Hbm映射文件及数据表.可以参考XDoclet文档中关于Hibernate的部分和夏昕编写的<Hibernate开发指南>.同样,这篇文章没有过多谈理论,只是给出了一个完整的实例加以说明.相关配置请参考上两篇文章.  1. 创建项目 ·  新建一个

利用Delphi开发网络数据库应用

Delphi 是具可视化界面的面向对象编程语言,它以其功能强大.简便易用等诸多特性,深受编程人员的欢迎.Delphi 中提供了数据库引擎 BDE(Borland Database Engine),并内含众多的数据库调用构件,为编程人员开发客户/服务器应用程序提供了方便.通常情况下,利用 Delphi 开发数据库应用程序,可以使用TTable.TDataSource.TDBEdit.TDBNavigator等构件.只要正确设置了构件的某些属性,再编写必要的程序代码对一些特定事件进行处理,就能够完成