ios地图软件开发,ios地图软件哪个最好

ios如何开发地图app

App内根据手机上装载的地图App将其显示在弹出的选择框,选择对应地图跳转进入地图导航。需要用到-

专注于为中小企业提供网站制作、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业胶州免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

(BOOL)canOpenURL:(NSURL

*)url

NS_AVAILABLE_IOS(3_0);方法判断手机是否已安装相应地图App。

要进行跳转需要先在xcode的plist文件内将目标App的url

Scheme加入白名单(LSApplicationQueriesSchemes)。

如何利用MapKit开发全英文检索的iOS地图

第一步:申请Key

先申请高德的KEY

1、填写应用名称

2、绑定服务选择IOS平台

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

4、点击获取KEY

第二步、新建地图工程

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

在高德官网有地图配置的详细说明,这里我就不多说了。

第三步、添加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坐标,必须进行坐标转换,很麻烦。)

第六步、初始化AMapSearchAPI

构造AMapSearchAPI对象,设置搜索结果语言为英文AMapSearchLanguage_en。

这步非常重要喔!必须要设置成英文,才能巧妙地让POI搜索、逆地理编码和地理编码、输入提示等,都变成纯英文喔。

第七步、写个搜索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];

}

}

如何开发支持kml 的ios 地图软件

您可以先用免费软件mobile

altas

creator在电脑上下好地图,可以下谷歌地图的。然后找个ios的离线地图app。推荐您试试“地图加加”,支持mobac制作的地图,支持轨迹记录,支持kml,gpx导入导出和编辑,支持全球搜索和导航

如何用高德LBS开放平台开发全英文iOS 地图应用

第一步:申请Key,用于搜索SDK。

提示:MapKit是不需要Key的,该key仅用于高德的iOS SDK搜索功能。

第二步:初始化MKMapView ,并添加到Subview。同时,进行定位,设置定位模式,在地图上显示定位点。

注意:

(1)MapKit中的定位(showUserLocation= YES),在回调中获取的坐标不用进行坐标偏转;若使用CLLocationManager方法进行定位,需要进行坐标偏转(参考附加内容)。

(2)MapKit没有申请定位权限,需在代码中申请一下定位权限。

申请方法:在 info.plist中追加NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription字段。其中:

NSLocationWhenInUseUsageDescription表示应用在前台的时候可以搜到更新的位置信息。

NSLocationAlwaysUsageDescription表示应用在前台和后台(suspend或terminated)都可以获取到更新的位置数据。

代码如下:

//申请定位权限

- (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对象,并设置搜索结果语言。(支持英文结果的搜索功能包括:POI搜索、逆地理编码和地理编码、输入提示,能够满足基本的搜索功能)

//初始化AMapSearchAPI

- (void)initSearch

{

//构造AMapSearchAPI

_search = [[AMapSearchAPI alloc] initWithSearchKey:APIKey Delegate:self];

_search.language = AMapSearchLanguage_en;//设置语言

}

第四步:构造搜索对象,设置搜索参数,发起查询,在相应的回调中进行结果展示(如:POI查询结果以大头针标注等等)。

以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];

}

}

IOS实现应用内打开第三方地图app进行导航

用过微信的应该都知道这个功能,对方发一个位置给你,点进去地图展示对方跟你的当前位置,界面提供了选择各个地图应用进行导航,更好这次需求也要搞这个功能。

这个功能实现不难,个人感觉比应用内嵌入第三方地图导航SDK用起来更舒服,更接地气,逼格也高点,主要要的是简单(毕竟人家啥都处理好了)。

上项目效果图(还是想吐槽下傻逼的产品,为啥不直接照搬微信的界面,至少比自己的好看)

这里有一个重点,主要是弹出的选择框的选项并不是固定的,而是根据你手机上有没有安装这个地图应用,没有就不会出现。

这里就要用到

- (BOOL)canOpenURL:(NSURL*)urlNS_AVAILABLE_IOS(3_0);

判断手机上有没有安装该地图应用。

所以要知道地图应用的url Scheme。

这里提供了几个常用地图应用的url Scheme:

baidumap//百度地图

iosamap//高德地图

comgooglemaps//谷歌地图

qqmap//腾讯地图

….//其他地图省略

苹果地图不需要,因为它是苹果地图啊,这样也好,能保证没有安装其他地图app,至少还有一个苹果地图,而且苹果地图在IOS9也做的越来越好了,本身API提供了一个跳转打开方法。

这里插入一个小细节,在IOS9之后,苹果进一步完善了安全机制,必须在plist里面设置url scheme白名单,不然无法打开对应的应用

前方高能,重点来了!!!!

这里我抽了个方法返回支持导航的地图信息数组:

这里只要传入提供的坐标点,就打包好了需要的信息。

什么,你说弹出?那玩意自己去写,不想写,自己去找,不然就用系统的actionSheet。

最后结尾还有个小插曲,由于我们后台给的目标经纬度是百度坐标系,项目用的也是百度地图,界面上展示是没啥问题了,但是由于不同的地图有自己的坐标系,而要用它们进行导航,那传给它们的必须是标准的经纬度坐标,这就蛋疼了,百度这坑爹只有提供了标准的转成它自己的坐标系,而没有提供反转的方法,去官网开发者社区发帖,也没用,只是回答你没有提供,所以我猜传言百度地图SDK是实习生写的还是有一定的可靠性。

没办法,只能求爷爷告奶奶,去查找对应的资料,还是找到一个第三方的转换方法 ,但是仍然有一定的偏差,能接受的就接受吧。


文章名称:ios地图软件开发,ios地图软件哪个最好
转载注明:http://hbruida.cn/article/dsscech.html