IOS百度地图之--->第二篇《大头针__简单使用及自定义》
呵呵!大家不要只看帖不回帖么,要不然我都没有积极性了。
第一步:创建一个用来呈现mapview的viewcontroller,不废话直接贴代码
BasicMapViewController需要在该类中加入地图的代理并实现相关事件
// 34.2778000000,108.9530980000 数据来源http://www.gpsspg.com/maps.htm
#define xian CLLocationCoordinate2DMake(34.2239390000,108.9807190000);
#import "BasicMapViewController.h"
#import “KHPaoPaoView.h”//气泡窗口
#import “KHPointAnnotation.h”//point
@interfaceBasicMapViewController ()
{
BMKMapView *_mapView;
NSBundle *bundle;
NSArray *pointArr;
}
@end
@implementation BasicMapViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view.
;
if (__IPHONE_OS_VERSION < 7.0)
{
navH = ;
}
, navH+, )];
// _mapView.showMapScaleBar = NO;
// _mapView.overlooking = 0;
bundle = [NSBundle mainBundle];
[self.view addSubview:_mapView];
KHPointAnnotation *point = [[KHPointAnnotationalloc] init];
point.title = @"西安市";
point.subtitle = @"我在这";
point.title1 = @"自定义泡泡测试";
point.title2 = @"自定义测试";
point.coordinate = xian;
BMKPointAnnotation *point1 = [[BMKPointAnnotationalloc] init];
point1.title = @"北京市";
point1.subtitle = @"0000000000000";
point1.coordinate = CLLocationCoordinate2DMake(39.905206, 116.390356);
pointArr = @[point,point1];
}
-(void)viewWillAppear:(BOOL)animated
{
[_mapViewviewWillAppear];
_mapView.delegate = self;// 此处记得不用的时候需要置nil,否则影响内存的释放
}
-(void)viewWillDisappear:(BOOL)animated
{
[_mapViewviewWillDisappear];
_mapView.delegate = nil;// 不用时,置nil
}
- (IBAction)switchAction:(UISwitch *)sender
{
)
{
if (sender.on)
{
[_mapViewsetMapType:BMKMapTypeStandard];
}
else
{
[_mapViewsetMapType:BMKMapTypeSatellite];
}
}
)
{
//第一参数地图中心位置,第二参数一中心点显示周围的经纬度差值
if (sender.on)
{
[_mapViewsetRegion:BMKCoordinateRegionMake(CLLocationCoordinate2DMake(34.2778000000,108.9530980000), BMKCoordinateSpanMake(0.5,0.5)) animated:YES];
}
else
{
[_mapViewsetRegion:BMKCoordinateRegionMake(CLLocationCoordinate2DMake(39.905206, 116.390356), BMKCoordinateSpanMake(0.5,0.5)) animated:YES];
}
}
)
{
[_mapView setTrafficEnabled:sender.on];
}
}
- (void)mapViewDidFinishLoading:(BMKMapView *)mapView
{
KHLog(@"地图加载完成");//回调事件请自行参考使用
)];//指南针位置可能看不见,这个和官方的交流吧!不清楚是什么原因
[_mapViewaddAnnotations:pointArr];
}
- (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
KHLog(@"地图区域改变完成");
}
#pragma mark 设置大头针
-(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation
{
if([annotation isKindOfClass:[BMKPointAnnotation class]])
{
BMKPinAnnotationView *newAnnotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"myAnnotation"];
newAnnotationView.pinColor = BMKPinAnnotationColorRed;
newAnnotationView.animatesDrop = YES;// 设置该标注点动画显示
return newAnnotationView;
}
else
{
// 这里使用自定义大头针
BMKPinAnnotationView *newAnnotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"myAnnotation"];
newAnnotationView.image = [UIImageimageWithContentsOfFile:[bundlepathForResource:@"local@2x"ofType:@"png"]];
newAnnotationView.animatesDrop = YES;// 设置该标注点动画显示
KHPaoPaoView *paopao = [[KHPaoPaoView alloc] init];
[paopao setAnnotationWith:((KHPointAnnotation *)annotation)];
newAnnotationView.paopaoView = [[BMKActionPaopaoView alloc] initWithCustomView:paopao];
return newAnnotationView;
}
}
第二步:创建大头针相关的类、
KHPointAnnotation这个类只要是实现了BMKAnnotation
// 该类为一个抽象类,定义了基于BMKAnnotation的BMKShape类的基本属性和行为,不能直接使用,必须子类化之后才能使用
@interface BMKShape : NSObject <BMKAnnotation> {
}
#import "BMKPointAnnotation.h"
@interface KHPointAnnotation : BMKShape{
@package
CLLocationCoordinate2D _coordinate;
}
///该点的坐标
@property (nonatomic, assign) CLLocationCoordinate2D coordinate;
@property (strong) NSString *title1;
@property (strong) NSString *title2;
@end
//.m中没什么东西就不贴了
KHPointAnnotation.h这个类继承自UIView 主要就是大头针被选中后展示内容
#import <UIKit/UIKit.h>
#import "KHPointAnnotation.h"
@interface KHPaoPaoView : UIView
{
UILabel *label1;
UILabel *label2;
UILabel *label3;
UILabel *label4;
}
-(instancetype)init;
/**
* 设置标注
*
* @param point 标注
*/
-(void)setAnnotationWith:(KHPointAnnotation *)point;
@end
#import "KHPaoPaoView.h"
@implementation KHPaoPaoView
-(instancetype)init
{
self = [super init];
if (self)
{
// 这里需要注意百度地图中使用的是碎图片拼起来的,这里的细化工作呵呵你们自己完成吧!
UIImage *image =[UIImageimageWithContentsOfFile:[[NSBundlemainBundle] pathForResource:@"medium@2x"ofType:@"png"]];
, , image., image.);
UIImageView *IMG = [[UIImageViewalloc] initWithFrame:self.frame];
IMG.image = image;
IMG.contentMode = UIViewContentModeScaleAspectFit;
[self addSubview:IMG];
, , , )];
[label1setFont:[UIFontsystemFontOfSize:14.0f]];
[self addSubview:label1];
, , , )];
[label2setFont:[UIFontsystemFontOfSize:14.0f]];
[self addSubview:label2];
, , , )];
[label3setFont:[UIFontsystemFontOfSize:14.0f]];
[self addSubview:label3];
, , , )];
[label4setFont:[UIFontsystemFontOfSize:14.0f]];
[self addSubview:label4];
}
returnself;
}
-(void)setAnnotationWith:(KHPointAnnotation *)point
{
label1.text = point.title;
label2.text = point.subtitle;
label3.text = point.title1;
label4.text = point.title2;
}

IOS百度地图之--->第二篇《大头针__简单使用及自定义》的更多相关文章
- IOS百度地图之--->第一篇《环境配置与基本使用》
Ios 百度地图SDK简易使用说明:http://developer.baidu.com/map/index.php?title=iossdk 先道歉:对于原来上传的Demo我很抱歉,什么都没有,也没 ...
- 百度地图总结第二篇--POI检索功能
简单介绍: 眼下百度地图SDK所集成的检索服务包含:POI检索.公交信息查询.线路规划.地理编码.行政区边界数据检索.在线建议查询.短串分享(包含POI搜索结果分享.驾车/公交/骑行/步行路线规划分享 ...
- iOS百度地图SDK集成详细步骤
1.iOS百度地图下载地址 http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 根据需要选择不同的版本 ...
- iOS原生地图开发指南续——大头针与自定义标注
iOS原生地图开发指南续——大头针与自定义标注 出自:http://www.sxt.cn/info-6042-u-7372.html 在上一篇博客中http://my.oschina.net/u/23 ...
- iOS百度地图简单使用详解
iOS百度地图简单使用详解 百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索.路径规划.地图标注.离线地图.定位.周边雷达等丰 ...
- iOS 百度地图大头针使用
百度地图使用第五讲:大头针使用(地图标注)http://bbs.yusian.com/thread-8384-1-1.html(出处: 小龙虾IT笔记)
- iOS百度地图简单使用
本文介绍三种接口: 1.基础地图2.POI检索3.定位 首先是配置环境,有两种方法,方法在官方教程里都有,不再多说 1.使用CocoaPods自动配置[这个方法特别好,因为当你使用CocoaPods配 ...
- iOS 百度地图使用详解
最近仿照美团做了款应用,刚好用到百度地图,高德地图之前用的比较多,只是这个项目的后台服务器是另外一个公司做的,他们用的就是百度地图,现在网上用百度地图的还不算太多,博文也是断断续续的,主要是中间跳跃有 ...
- iOS 百度地图坐标标注
注:由于iOS9改用更安全的https,为了能够在iOS9中正常使用地图SDK,请在"Info.plist"中进行如下配置,否则影响SDK的使用. <key>NSApp ...
随机推荐
- canvas绘图详解-06-绘制一个五角星-常用绘图原理
先将如何画一个正规的五角星 在五角星的内外画两个圆,五角星有五个角,360/5=72度 所以得出这两个角的度数 然后算出这两个点坐标 角度转弧度 角度/180*Math.PI 所以外顶点坐标 x: ...
- TPS及计算方法
个事务,TPS为6 / 60s = 0.10 TPS.同时我们会知道事务的响应时间(或节拍),以此例,60秒完成6个事务也同时代表每个事务的响应时间或节拍为10秒. 利特尔法则 (Little' ...
- 模块化写法-IIFE解析
一.IIFE解释 全拼Imdiately Invoked Function Expression,立即执行的函数表达式. 像如下的代码所示,就是一个匿名立即执行函数: (function(windo ...
- 网络攻击技术开篇——SQL Injection
本文转自: http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html 1.1.1 摘要 日前,国内最大的程序员社区CSDN网站的用户数据库 ...
- Bootstrap框架的要点--栅格系统
不同的公司要求使用框架有所不同,而Bootstrap框架在工作中使用频次较高,其中栅格系统在这一框架中的地位不容小觑,下面我们开始聊聊它吧. 简单介绍: Bootstrap提供了一套响应式.移动设备优 ...
- 复杂的1秒--图解Google搜索技术
谷歌(Google),一个非常成功,但又十分神秘,而且带有几分理想化色彩的互联网搜索巨人,它还是一家相当了不起的广告公司,谷歌首页上的那个搜索按钮是其年赢利200亿美元的杀手级应用,也是Interne ...
- Redis的二八定律
常用命令: 1.setex key 有效时间 value ----------意思就是添加并设置该键值对的存活时间 2.mset key1 value1 key2 value2 key3 value3 ...
- js加载XML文件
// XML文件 <?xml version="1.0" encoding="gb2312"?> <root> <father n ...
- Java显式锁学习总结之六:Condition源码分析
概述 先来回顾一下java中的等待/通知机制 我们有时会遇到这样的场景:线程A执行到某个点的时候,因为某个条件condition不满足,需要线程A暂停:等到线程B修改了条件condition,使con ...
- 每天一个Linux命令(13)--less命令
less 工具也是对文件或其它输出进行分页显示的工具,应该说是Linux正统馋看文件内容的工具,功能极其强大.less 的用法比起 more 更加有弹性. 在 more 的时候,我们没有办法向前面 ...