百度地图之标注一组地理坐标<2>
一、需求
开发移动地图相关的应用有时会有这种需求:在地图上显示自己的定位,然后想查看周边使用这个应用的有哪些人。当然完毕这个功能须要后台数据的支持。你要把自己的位置信息发给后台,后台在依据你的位置查询数据库返回你周围的用户的信息,这些信息包含经纬度坐标、描写叙述等。这里仅仅描写叙述client怎样实现。至于后台返回的这些数据就在本地创建家数据了,以下就用百度地图实现这个功能。
二、实现效果展示
三、代码(定位功能上一篇文章已经描写叙述。以下仅仅实现显示一组坐标)
1、创建变量接受协议
@interface BaiduMapViewController ()<BMKMapViewDelegate,BMKLocationServiceDelegate>
{
BMKMapView * _mapView; //地图
BMKLocationService * _locationService; //定位 NSMutableArray * _points;//地理坐标的集合
NSMutableArray * _titles;//标注
}
@property (nonatomic,strong) CLLocationManager *locationManager; //iOS8以后定位授权机制的改变,须要手动授权
@end
2、创建视图+初始化对应数据
- (void)viewDidLoad {
[super viewDidLoad];
_mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:_mapView];
[_mapView setZoomLevel:14];
//定位
_locationService = [[BMKLocationService alloc]init];
//显示周围
UIButton * showAround = [UIButton buttonWithType:UIButtonTypeCustom];
[showAround setTitle:@"显示周围" forState:UIControlStateNormal];
[showAround setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
showAround.frame = CGRectMake(200, 0, 80, 30);
[showAround addTarget:self action:@selector(showAround) forControlEvents:UIControlEventTouchUpInside];
[self.navigationController.navigationBar addSubview:showAround];
//创建地理坐标和标注title
CGPoint item1 = CGPointMake(39.915101, 116.403981);
CGPoint item2 = CGPointMake(39.945210, 116.403981);
CGPoint item3 = CGPointMake(39.935301, 116.403991);
CGPoint item4 = CGPointMake(39.925421, 116.403971);
_points = [[NSMutableArray alloc] initWithObjects:NSStringFromCGPoint(item1), NSStringFromCGPoint(item2),NSStringFromCGPoint(item3),NSStringFromCGPoint(item4),nil];
_titles = [[NSMutableArray alloc]initWithObjects:@"天安门",@"神刹海",@"景山公园",@"故宫", nil];
}
3、管理地图的生命周期:自2.0.0起。BMKMapView新增viewWillAppear、viewWillDisappear方法来控制BMKMapView的生命周期。而且在一个时刻仅仅能有一个BMKMapView接受回调消息。因此在使用BMKMapView的viewController中须要在viewWillAppear、viewWillDisappear方法中调用BMKMapView的相应的方法,并处理delegate
#pragma mark - viewWillAppear
-(void)viewWillAppear:(BOOL)animated{
[_mapView viewWillAppear];
_mapView.delegate = self;
_locationService.delegate = self;
} #pragma mark - viewDidAppear
-(void)viewWillDisappear:(BOOL)animated{
[_mapView viewWillDisappear];
_mapView.delegate = nil;
_locationService.delegate = nil; }
4、当点击“显示周边”button的时创建大头针
-(void)showAround{
if (_points.count) {
NSMutableArray * annotations = [[NSMutableArray alloc]init];
for (int i = 0; i < _points.count; i++) {
CGPoint point = CGPointFromString(_points[i]);
CLLocationCoordinate2D pt = (CLLocationCoordinate2D){point.x,point.y};
//创建大头针
BMKPointAnnotation * item = [[BMKPointAnnotation alloc]init];
//设置大头针的坐标
item.coordinate = pt;
//设置大头针的标注
item.title = _titles[i];
[annotations addObject:item];
if(i == 0)
{
//将第一个点的坐标移到屏幕中央
_mapView.centerCoordinate = pt;
}
}
//加入大头针到地图上
[_mapView addAnnotations:annotations];
}
}
#pragma mark 当调用[_mapView addAnnotations:annotations]时回出发地图的代理方法,创建大头针
-(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation{
NSString * ID = @"annotationViewID";
BMKPinAnnotationView * view = (BMKPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:ID];
if (view == nil) {
view = [[BMKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:ID];
view.pinColor = BMKPinAnnotationColorPurple;
view.animatesDrop = YES;
}
view.centerOffset = CGPointMake(0, -(view.frame.size.height*.5));
view.annotation = annotation; //设置代理
view.canShowCallout = TRUE;
return view;
}
关于地图的其它功能待续……
百度地图之标注一组地理坐标<2>的更多相关文章
- php+js实现百度地图多点标注的方法
本文实例讲述了php+js实现百度地图多点标注的方法.分享给大家供大家参考,具体如下: 1.php创建json数据 ? 1 2 $products = $this->product_db-> ...
- iOS 百度地图坐标标注
注:由于iOS9改用更安全的https,为了能够在iOS9中正常使用地图SDK,请在"Info.plist"中进行如下配置,否则影响SDK的使用. <key>NSApp ...
- vue 百度地图多标注展示和点击标注进行的提示
index.html中加入script <script type="text/javascript" src="http://api.map.baidu.com/a ...
- 百度地图api 标注的图标不显示问题
图中郑州PPT设计制作中心前面应该有一个小的标,但是死活就是不显示. 经过百度搜索和测试,终于解决.应该是页面定义的CSS和百度的冲突了,解决办法如下: 在当前页面中,加入 <style typ ...
- 【百度地图API】如何快速创建带有标注的地图?——快速创建地图工具+如何标注商家
原文:[百度地图API]如何快速创建带有标注的地图?--快速创建地图工具+如何标注商家 摘要: 如果你不会程序,如果你不想写代码. 如果你想拥有一张自己的地图,如果你想在该地图上标注出你商店的位置. ...
- 百度地图标注及结合ECharts图谱数据可视化
本示例中根据企业位置经纬度,在页面右侧百度地图中标注企业名称.同时页面左侧ECharts图谱饼状图用于统计企业行业与注册资本.当右侧百度地图缩放拖拽,左侧ECharts图谱根据右侧地图上出现的企业动态 ...
- 【百度地图API】JS版本的常见问题
1.请问如何将我的店铺标注在百度地图上?我是否可以做区域代理?在百度地图上标注是否免费? 答复: 这里只负责API的技术咨询,不解决任何地图标注问题.在百度地图上标注自己公司,即气泡标注业务.该业务已 ...
- 深入浅出百度地图API开发系列(1):前言
百度地图API目前在地图API领域越来越受到众多开发者的关注,许多应用都使用到了百度地图API服务,包括博主me,我自己使用做的是Javascript API,根据经验,我想整理出一份系列教程,如果能 ...
- 【百度地图API】交你如何用百度地图搜索自己的数据!不需数据库!
原文:[百度地图API]交你如何用百度地图搜索自己的数据!不需数据库! 摘要: 我有一定的房产数据,还有银行数据.我想在百度地图上标注出来,并且能搜索到我这些数据. 可是百度的数据库上并没有我的数据. ...
随机推荐
- Django--------问题:在terminal命令行创建超级用户时入到password时输入为什么没有反应?
首先如果遇到这样的问题不用担心,一般一会儿就可以解决: 其实,输入的时候并不是没有反应,只是你输入的时候命令行没有将你的输入显示出来,关键是输入行对Password:********也不是采用这种方式 ...
- 让 PHP COOKIE 立即生效(不用刷新就可以使用)
<?php function set_my_cookie($, $path = '', $domain = '') { $_COOKIE[$var] = $value; setcookie($v ...
- 零基础自学用Python 3开发网络爬虫
原文出处: Jecvay Notes (@Jecvay) 由于本学期好多神都选了Cisco网络课, 而我这等弱渣没选, 去蹭了一节发现讲的内容虽然我不懂但是还是无爱. 我想既然都本科就出来工作还是按照 ...
- webpack的像素转vw单位的loader插件
安装: npm i px2vw-view-loader 配置: 按以下loader格式,添加进入webpack配置文件,实现从px转换成vw,适用于移动端项目 module: { rules: [{ ...
- centos中代理的设置
最近在校园网中使用一个centos的主机,链接网络是需要代理的,如果是windows主机在Internet选项里设置一下就可以,可是在linux这个任何配置都要更改配置文件的系统里我还真是纠结了好大一 ...
- 模拟select框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Git的使用小结
1. git是一种分布式版本控制工具.目前项目中比较常见的版本控制器有SVN.CVS等,这些版本控制工具属于集中式版本控制器.集中式版本控制器,有一个中央服务器,开发人员的开发机从主服务器上下载了项目 ...
- 刷题总结——大工程(bzoj3611)
题目: Description 国家有一个大工程,要给一个非常大的交通网络里建一些新的通道. 我们这个国家位置非常特殊,可以看成是一个单位边权的树,城市位于顶点上. 在 2 个国家 a,b 之间建 ...
- 多态Poly中的向上/下转型 Upcast/Downcast
[参考资料]马克-to-win java中多态polymorphism,向上转型和动态方法调度有什么用? java中什么叫多态,动态方法调度(dynamic method dispatch)? jav ...
- 关于ubuntu的对拍
感谢夏天dl的blog,写的十分清楚,但是本人对于ubuntu十分不熟悉 所以不怎么会使用. 对拍的可执行文件是sh,就是bash语言 #!bin/bash while true; do ./date ...