一、需求

开发移动地图相关的应用有时会有这种需求:在地图上显示自己的定位,然后想查看周边使用这个应用的有哪些人。当然完毕这个功能须要后台数据的支持。你要把自己的位置信息发给后台,后台在依据你的位置查询数据库返回你周围的用户的信息,这些信息包含经纬度坐标、描写叙述等。这里仅仅描写叙述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;
}

关于地图的其它功能待续……

百度地图之标注一组地理坐标&lt;2&gt;的更多相关文章

  1. php+js实现百度地图多点标注的方法

    本文实例讲述了php+js实现百度地图多点标注的方法.分享给大家供大家参考,具体如下: 1.php创建json数据 ? 1 2 $products = $this->product_db-> ...

  2. iOS 百度地图坐标标注

    注:由于iOS9改用更安全的https,为了能够在iOS9中正常使用地图SDK,请在"Info.plist"中进行如下配置,否则影响SDK的使用. <key>NSApp ...

  3. vue 百度地图多标注展示和点击标注进行的提示

    index.html中加入script <script type="text/javascript" src="http://api.map.baidu.com/a ...

  4. 百度地图api 标注的图标不显示问题

    图中郑州PPT设计制作中心前面应该有一个小的标,但是死活就是不显示. 经过百度搜索和测试,终于解决.应该是页面定义的CSS和百度的冲突了,解决办法如下: 在当前页面中,加入 <style typ ...

  5. 【百度地图API】如何快速创建带有标注的地图?——快速创建地图工具+如何标注商家

    原文:[百度地图API]如何快速创建带有标注的地图?--快速创建地图工具+如何标注商家 摘要: 如果你不会程序,如果你不想写代码. 如果你想拥有一张自己的地图,如果你想在该地图上标注出你商店的位置. ...

  6. 百度地图标注及结合ECharts图谱数据可视化

    本示例中根据企业位置经纬度,在页面右侧百度地图中标注企业名称.同时页面左侧ECharts图谱饼状图用于统计企业行业与注册资本.当右侧百度地图缩放拖拽,左侧ECharts图谱根据右侧地图上出现的企业动态 ...

  7. 【百度地图API】JS版本的常见问题

    1.请问如何将我的店铺标注在百度地图上?我是否可以做区域代理?在百度地图上标注是否免费? 答复: 这里只负责API的技术咨询,不解决任何地图标注问题.在百度地图上标注自己公司,即气泡标注业务.该业务已 ...

  8. 深入浅出百度地图API开发系列(1):前言

    百度地图API目前在地图API领域越来越受到众多开发者的关注,许多应用都使用到了百度地图API服务,包括博主me,我自己使用做的是Javascript API,根据经验,我想整理出一份系列教程,如果能 ...

  9. 【百度地图API】交你如何用百度地图搜索自己的数据!不需数据库!

    原文:[百度地图API]交你如何用百度地图搜索自己的数据!不需数据库! 摘要: 我有一定的房产数据,还有银行数据.我想在百度地图上标注出来,并且能搜索到我这些数据. 可是百度的数据库上并没有我的数据. ...

随机推荐

  1. php处理文件和操作系统

    一.文件和目录 (1).解析目录路径:basename()返回路径的文件名部分 获取路径目录:dirname() 返回除了文件名的路径部分 了解关于路径的更多信息:pathinfo()   返回关联数 ...

  2. change login screen wallpaper on ubuntu14.04

    install lightdm-gtk-greeter $ apt-get install lightdm config lightdm $ vim /etc/lightdm/lightdm-gtk- ...

  3. 【bzoj3291】Alice与能源计划 模拟费用流+二分图最大匹配

    题目描述 在梦境中,Alice来到了火星.不知为何,转眼间Alice被任命为火星能源部长,并立刻面临着一个严峻的考验. 为了方便,我们可以将火星抽象成平面,并建立平面直角坐标系.火星上一共有N个居民点 ...

  4. 【Luogu】P2473奖励关(期望DP)

    题目链接 逆推期望DP.设f[i][j]为1~i-1中吃到的宝物集合为j,在i~k轮能得到的最大期望分数. 如果不吃显然f[i][j]+=f[i+1][j]/n 如果吃就是f[i][j]+=max(f ...

  5. ZOJ 3772 Calculate the Function 线段树+矩阵

    Calculate the Function Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%lld & %ll ...

  6. 【Tyvj2133&BZOJ1146】网络管理Network(树套树,DFS序,树状数组,主席树,树上差分)

    题意:有一棵N个点的树,每个点有一个点权a[i],要求在线实现以下操作: 1:将X号点的点权修改为Y 2:查询X到Y的路径上第K大的点权 n,q<=80000 a[i]<=10^8 思路: ...

  7. CodeforcesD. Aztec Catacombs

    $n \leq 300000$的完全无向图,每条边有可行和不可行的状态,一开始只有$m \leq 300000$条边是可行的,给出.每次从$x$走到$y$时,所有与$x$相连的边的可行/不可行状态会改 ...

  8. 从Java源码到Java字节码

    Java最主流的源码编译器,javac,基本上不对代码做优化,只会做少量由Java语言规范要求或推荐的优化:也不做任何混淆,包括名字混淆或控制流混淆这些都不做.这使得javac生成的代码能很好的维持与 ...

  9. Laravel 5.1 关掉csrf验证

    Laravel 5.1 关掉csrf验证 说明: Laravel默认是开启了CSRF功能,有时可能不能传递验证token,就需要关闭. 方法一(全局关闭): 打开文件:app\Http\Kernel. ...

  10. AC日记——货车运输 codevs

    3287 货车运输 2013年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Descri ...