IOS 使用程序外地图(IOS Map and google Map)
1.调用IOS6苹果地图
IOS6中实现这个功能需要使用Map Kit中的MKPlaceMark和MKMapItem两个类,因此我们需要在工程中添加MapKit.framework主要代码如下:
- (IBAction)geocodeQuery:(id)sender { if(_txtQueryKey.text == nil || [_txtQueryKey.text length] == )
{
return;
} CLGeocoder *geocoder = [[CLGeocoder alloc]init];
[geocoder geocodeAddressString:_txtQueryKey.text completionHandler:^(NSArray *placemarks, NSError *error) { NSLog(@"查询记录数:%i",[placemarks count]); if([placemarks count]>)
{
CLPlacemark *placemark = placemarks[]; CLLocationCoordinate2D coordinat = placemark.location.coordinate;
NSDictionary *address = placemark.addressDictionary; MKPlacemark *place = [[MKPlacemark alloc]initWithCoordinate:coordinat addressDictionary:address]; MKMapItem *mapItem = [[MKMapItem alloc]initWithPlacemark:place]; [mapItem openInMapsWithLaunchOptions:nil]; //关闭键盘
[_txtQueryKey resignFirstResponder];
}
}];
}
在调用IOS自带的苹果地图应用,openInMapsWithLaunchOptions:方法时MKMapItem类的实例方法,参数时NSDictionary类型,这个参数可以控制地图初始化信息,它包含一些键:
(1)MKlaunchOptionsDirectionsModeKey 设定路线模式,他有两个值MKLaunchOptionsDirectionModeDriving(驾车路线)和 MKLaunchOptionsDirectionsModeWalking(步行路线).
(2)MKLaunchOptionsMapTypeKey 设定地图类型。
(3)MKLaunchOptionsMapCenterKey设定地图中心点。
(4)MKLaunchOptionsMapSpanKey设置地图跨度。
(5)MKLaunchOptionsShowsTrafficKey设置交通状况。
例如,可以使用下面的代码在地图上设置行车路线:
NSDictionary *options=[[NSDictionary alloc]initwithObjectsAndKeys:MKLaunchOptionsDirectionsModeDriving,MkLaunchOptionsDirectionsModeKey,nil];
MKMapItem *mapItem = [[MKMapItem alloc] initwithPlacemark:place];
[mapItem openInMapsWithLaunchOptions:options];
设置行车路线后,地图上标注出路线,默认情况下起点时当前位置,这个位置是通过定位服务获得的。
如果有多个点需要标注,我们可以使用MKMapItem的类方法:
+(BOOL)openMapsWithItems:(NSArray *)mapItems launchOptions:(NSDictionary *)launchOptions
其中参数mapItems是标注点的集合,launchOptions是启动参数。如果想使用这个方法,则上面的例子可以修改如下:
- (IBAction)geocodeQuery:(id)sender { if(_txtQueryKey.text == nil || [_txtQueryKey.text length] == )
{
return;
} CLGeocoder *geocoder = [[CLGeocoder alloc]init];
[geocoder geocodeAddressString:_txtQueryKey.text completionHandler:^(NSArray *placemarks, NSError *error) { NSMutableArray *array = [NSMutableArray new]; for (int i=; i<[placemarks count]; i++) {
CLPlacemark *placemark = placemarks[i]; CLLocationCoordinate2D coordinat = placemark.location.coordinate;
NSDictionary *address = placemark.addressDictionary; MKPlacemark *place = [[MKPlacemark alloc]initWithCoordinate:coordinat addressDictionary:address]; MKMapItem *mapItem = [[MKMapItem alloc]initWithPlacemark:place]; [array addObject:mapItem];
//关闭键盘
[_txtQueryKey resignFirstResponder];
} if([array count]>)
{
[MKMapItem openMapsWithItems:array launchOptions:nil];
}
}];
}
2.调用谷歌web地图
也可以借助谷歌的web地图API进行开发地图应用程序,但这里涉及的技术都是web技术了,而非本地技术,谷歌提供的地图查询url形式如下:
- (IBAction)geocodeQuery:(id)sender { if(_txtQueryKay.text == nil || [_txtQueryKay.text length] == )
{
return;
} CLGeocoder *geocoder = [[CLGeocoder alloc]init];
[geocoder geocodeAddressString:_txtQueryKay.text completionHandler:^(NSArray *placemarks, NSError *error) {
NSLog(@"查询记录数:%i",[placemarks count]); if([placemarks count]>)
{
CLPlacemark *placemark = placemarks[]; CLLocationCoordinate2D coordinate = placemark.location.coordinate; NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/map?q=%f, %f",coordinate.latitude,coordinate.longitude]; NSURL *url= [NSURL URLWithString:urlString]; [[UIApplication sharedApplication] openURL:url]; //关闭键盘
[_txtQueryKay resignFirstResponder];
}
}];
}
IOS 使用程序外地图(IOS Map and google Map)的更多相关文章
- iOS开发——程序员必备&iOS安装包的三种格式 deb、ipa 和 pxl的解释和说明
iOS安装包的三种格式 deb.ipa 和 pxl的解释和说明 目前 iOS 平台上常见的安装包有三种,deb.ipa 和 pxl.转自链接:http://fanlb.blogbus.com/logs ...
- Delphi for iOS开发指南(3):创建一个FireMonkey iOS应用程序
http://cache.baiducontent.com/c?m=9d78d513d9d431a94f9d92697d60c015134381132ba1d0020fa48449e3732b4b50 ...
- 使用Visual Studio开发跨平台的iOS应用程序
[原文发表地址]Developing cross-platform iOS application using Visual Studio [原文发表时间]2015/6/4 C ++是一种流行的高级编 ...
- 2021 年 iOS 应用程序开发七种最佳语言
移动应用程序现在几乎是每个在线业务的必备品.最新的 StatCounter 数据显示,多达56% 的在线连接是通过移动设备建立的,这使它们高于平板电脑和计算机.更重要的是,同一个消息来源说,其中27% ...
- 房产地图google map的初步应用点滴.2)(转)
房产地图google map的初步应用点滴.1)房产地图google map的初步应用点滴.2)房产地图google map的初步应用点滴.3) 房产地图google map的初步应用点滴.4) 本来 ...
- (6)Xamarin.android google map v2
原文 Xamarin.android google map v2 Google Map v1已经在2013年的3月开始停止支持了,目前若要在你的Android手机上使用到Google Map,就必须要 ...
- Google Map和桌面组件 Android开发教程
本文节选于机械工业出版社推出的<Android应用开发揭秘>一 书,作者为杨丰盛.本书内容全面,详细讲解了Android框架.Android组件.用户界面开发.游戏开发.数据存储.多媒体开 ...
- Google Map API v2 步步为营 (二)----- Location
接上篇. 改造一下MapsActivity: public class MapsActivity extends Activity implements LocationListener, InfoW ...
- iOS开发---集成百度地图完善版
一.成为百度的开发者.创建应用 http://developer.baidu.com/map/index.php?title=首页 (鼠标移向 然后选择你的项目需要的功能 你可以在里面了解到你想要使用 ...
随机推荐
- 让EF支持sql语句
BaseDal类: public class BaseDal : IDisposable { #region 事件 internal Func<bool> DBCommitting; in ...
- Nodejs解析HTML网页模块 jsdom
工作需要抓取某些网页,所以今天试用下了node下的jsdom模块.同样功能的还有jquery jsdom https://npmjs.org/package/jsdom API很简单. jsdom.e ...
- 重构HTML改善web应用设计
本文从良构,有效性,布局三个角度,结合往日项目开发经历, 整理总结重构HTML改善Web应用设计的几点规则和做法.部分参考自<重构HTML改善Web应用设计>. 重构.什么是重构?为什么要 ...
- BroadcastReceiver自学笔记
1. 使用步骤: 1.1 声明Intent Intent intent = new Intent("name");------静态常用 IntentFilter filter = ...
- 关于group by的一段SQl语句——Oracle
select cc.fformulacode, cc.rangedate, dd.fpervalue from (select n1.fformulacode, max(n1.frangedate) ...
- ViEmu for VS2013-3.2.1 破解(转)
ViEmuVS2013-3.2.1 破解 VS升级到2013后,作为一个Vimer,自然需要更新最新的ViEmu插件,因为现在离了Vim,写代码已经寸步难行了. ViEmu 3.2.1的破解其实和 ...
- Convert Sorted Array to Balanced Binary Search Tree (BST)
(http://leetcode.com/2010/11/convert-sorted-array-into-balanced.html) Given an array where elements ...
- 在Java SE中使用Hibernate处理数据
如今,Hibernate正在迅速成为非常流行的(如果不是最流行的)J2EE O/R映射程序/数据集成框架.它为开发人员提供了处理企业中的关系数据库的整洁.简明且强大的工具.但如果外部需要访问这些已被包 ...
- Struts2知识总结
整篇参考:http://blog.csdn.net/zq9017197/article/details/5958627 要搞清楚以下几点: 1.Struts2是什么?它的运行原理是什么? 2.Stru ...
- Angularjs基础教程
Angularjs-基础教程 一些angualr的基础概念,适合入门. 1.下载 推荐 bower 或 npm 安装. bower install angular bower install angu ...