【iOS】7.4 定位服务->3.5 地图框架MapKit
本文并非最终版本,如果想要关注更新或更正的内容请关注文集,联系方式详见文末,如有疏忽和遗漏,欢迎指正。
本文相关目录:
================== 所属文集:【iOS】07 设备工具 ==================
7.4 定位服务->1.0 简介
7.4 定位服务->2.1.1 定位 - 官方框架CoreLocation: 请求用户授权
7.4 定位服务->2.1.2 定位 - 官方框架CoreLocation: CLLocationManager位置管理器
7.4 定位服务->2.1.3.1 定位 - 官方框架CoreLocation 功能1:地理定位
7.4 定位服务->2.1.3.2 定位 - 官方框架CoreLocation 功能2:地理编码和反地理编码
7.4 定位服务->2.1.3.3 定位 - 官方框架CoreLocation 功能3:区域监听
7.4 定位服务->2.1.4 定位 - 官方框架CoreLocation 案例:指南针效果
7.4 定位服务->2.2 定位 - locationManager框架
7.4 定位服务->3.1 地图框架MapKit 功能1:地图展示
7.4 定位服务->3.2 地图框架MapKit 功能2:路线规划(导航)
7.4 定位服务->3.3 地图框架MapKit 功能3:3D视图
7.4 定位服务->3.4 地图框架MapKit 功能4:地图截图
7.4 定位服务->3.5 地图框架MapKit 功能5:POI检索
================== 所属文集:【iOS】07 设备工具 ==================
地图框架 - MapKit目录:
![](https://img.haomeiwen.com/i1903695/06d94dca673040eb.png)
本文目录:
![](https://img.haomeiwen.com/i1903695/baa577afeb9fadb5.png)
具体的步骤方法如下:
![](https://img.haomeiwen.com/i1903695/468e97f0613ec06f.png)
![](https://img.haomeiwen.com/i1903695/cc077c23569def42.png)
![](https://img.haomeiwen.com/i1903695/7834dafcfe09cb6d.png)
![](https://img.haomeiwen.com/i1903695/d2f1fa5e28392418.png)
代码21:POI检索 Demo
编译环境:Xcode 8.0
模拟器版本:iOS 10
Swift版本:3.0
【OC 语言】
#import "ViewController.h"
#import <MapKit/MapKit.h>
@interface ViewController ()
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
// 1. 创建一个POI请求
MKLocalSearchRequest *request = [[MKLocalSearchRequest alloc]init];
// 2.1 设置请求检索的关键字
request.naturalLanguageQuery = @"银行";
// 2.2 设置请求检索的区域范围
request.region = self.mapView.region;
// 3. 根据请求创建检索对象
MKLocalSearch *search = [[MKLocalSearch alloc]initWithRequest:request];
// 4. 使用检索对象, 检索对象
[search startWithCompletionHandler:^(MKLocalSearchResponse * _Nullable response, NSError * _Nullable error) {
if (error == nil) {
// 响应对象MKLocalSearchResponse,里面存储着检索出来的"地图项",每个地图项中有包含位置信息, 商家信息等
[response.mapItems enumerateObjectsUsingBlock:^(MKMapItem * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
// 遍历所有的关键字搜到的结果的名称
NSLog(@"%@",obj.name); // 最多只能打印10条数据
}];
}
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
打印结果:
OC - POI检索[95598:2389779] 中国银行(凉山城南支行)
OC - POI检索[95598:2389779] 凉山农商银行ATM
OC - POI检索[95598:2389779] 中国建设银行(西昌攀西支行)
OC - POI检索[95598:2389779] 凉山农商银行
OC - POI检索[95598:2389779] 城市信用社(沿河路)
OC - POI检索[95598:2389779] 中国工商银行(胜利南路分理处)
OC - POI检索[95598:2389779] 中国银行(一环路南二段支行)
OC - POI检索[95598:2389779] 中国工商银行(凉山支行)
OC - POI检索[95598:2389779] 中国农业银行(西昌龙眼井支行)
OC - POI检索[95598:2389779] 中国工商银行(凉山航天城支行)
【Swift 语言】
import UIKit
import MapKit
class ViewController: UIViewController {
@IBOutlet weak var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
// MARK: - POI检索
// 1. 创建一个POI请求
let request: MKLocalSearchRequest = MKLocalSearchRequest()
// 2.1 设置请求检索的关键字
request.naturalLanguageQuery = "银行"
// 2.2 设置请求检索的区域范围
request.region = mapView.region
// 3. 根据请求创建检索对象
let search: MKLocalSearch = MKLocalSearch(request: request)
// 4. 使用检索对象, 检索对象
search.start { (response:MKLocalSearchResponse?, error:Error?) in
if error == nil {
// 响应对象MKLocalSearchResponse,里面存储着检索出来的"地图项",每个地图项中有包含位置信息, 商家信息等
let items = response!.mapItems
for item in items {
// 遍历所有的关键字搜到的结果的名称
print(item.name) // 最多只能打印10条数据
}
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
打印结果:
Optional("中国银行(凉山城南支行)")
Optional("凉山农商银行ATM")
Optional("中国建设银行(西昌攀西支行)")
Optional("凉山农商银行")
Optional("城市信用社(沿河路)")
Optional("中国工商银行(胜利南路分理处)")
Optional("中国银行(一环路南二段支行)")
Optional("中国工商银行(凉山支行)")
Optional("中国农业银行(西昌龙眼井支行)")
Optional("中国工商银行(凉山航天城支行)")
本文源码 Demo 详见 Github
https://github.com/shorfng/iOS_7.0_Device-Tools
作者:蓝田(Loto)
【作品发布平台】
① 简书
② 博客园
③ Gitbook(如果觉得文章太长,请阅读此平台发布的文章)
【代码托管平台】
【如有疑问,请通过以下方式交流】
① 评论区回复
② 发送邮件
至 shorfng@126.com
本文版权归作者和本网站共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,谢谢合作。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
-
支付宝扫一扫 向我打赏
-
你也可以微信 向我打赏