呵呵!大家不要只看帖不回帖么,要不然我都没有积极性了。

第一步:创建一个用来呈现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百度地图之--->第二篇《大头针__简单使用及自定义》的更多相关文章

  1. IOS百度地图之--->第一篇《环境配置与基本使用》

    Ios 百度地图SDK简易使用说明:http://developer.baidu.com/map/index.php?title=iossdk 先道歉:对于原来上传的Demo我很抱歉,什么都没有,也没 ...

  2. 百度地图总结第二篇--POI检索功能

    简单介绍: 眼下百度地图SDK所集成的检索服务包含:POI检索.公交信息查询.线路规划.地理编码.行政区边界数据检索.在线建议查询.短串分享(包含POI搜索结果分享.驾车/公交/骑行/步行路线规划分享 ...

  3. iOS百度地图SDK集成详细步骤

    1.iOS百度地图下载地址 http://developer.baidu.com/map/index.php?title=iossdk/sdkiosdev-download 根据需要选择不同的版本  ...

  4. iOS原生地图开发指南续——大头针与自定义标注

    iOS原生地图开发指南续——大头针与自定义标注 出自:http://www.sxt.cn/info-6042-u-7372.html 在上一篇博客中http://my.oschina.net/u/23 ...

  5. iOS百度地图简单使用详解

    iOS百度地图简单使用详解 百度地图 iOS SDK是一套基于iOS 5.0及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索.路径规划.地图标注.离线地图.定位.周边雷达等丰 ...

  6. iOS 百度地图大头针使用

    百度地图使用第五讲:大头针使用(地图标注)http://bbs.yusian.com/thread-8384-1-1.html(出处: 小龙虾IT笔记)

  7. iOS百度地图简单使用

    本文介绍三种接口: 1.基础地图2.POI检索3.定位 首先是配置环境,有两种方法,方法在官方教程里都有,不再多说 1.使用CocoaPods自动配置[这个方法特别好,因为当你使用CocoaPods配 ...

  8. iOS 百度地图使用详解

    最近仿照美团做了款应用,刚好用到百度地图,高德地图之前用的比较多,只是这个项目的后台服务器是另外一个公司做的,他们用的就是百度地图,现在网上用百度地图的还不算太多,博文也是断断续续的,主要是中间跳跃有 ...

  9. iOS 百度地图坐标标注

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

随机推荐

  1. 使用 visualstudio code 编辑器调试执行在 homestead 环境中的 laravel 程序

    由于之前做 .net 开发比较熟悉 visualstudio,所以自 visualstudio code 发布后就一直在不同场合使用 vscode ,比如前端.node等等.最近在做 laravel ...

  2. js之Math对象

    ; var num1 = Math.floor(num); // 向下取整 var num2 = Math.ceil(num); // 向上取整 document.write(num2+'-<b ...

  3. Omi原理-环境搭建

    环境搭建 Omi框架使用 Webpack + ES6 的方式去开发:使用karma+jasmine来作为Omi的测试工具. Karma介绍 Karma是一个基于Node.js的JavaScript测试 ...

  4. CXF_Spring_Rest

    一.接口类 <PRE class=java name="code">@Path("/rest_HelloWorld") public interfa ...

  5. 调用win32 api 函数SendMessage() 实现消息直接调用

    简单的调用例子, 适合初学者学习,当然 我也是初学者. #include <windows.h> #include <stdio.h> #include <stdlib. ...

  6. .net 基础服务开源战略规划备忘录

    公司现状 1. 技术人员水平限制: 基础研发人员技术细节,性能处理能力不足,技术视野不够开阔;甚至一些高可用,高性能方案的概念都未听闻,更别提发展方向和思路了,令人痛心. 2. 技术反馈渠道限制: 公 ...

  7. Android搜索框以及内容提供器

    先看结果: 相关的官方文档在这里:Creating a Search Interface Android官方提供了两种方式: 弹出一个Dialog,覆盖当前的Activity界面 在AppBar中扩展 ...

  8. PHP 中使用 Composer

    在线安装版本: http://www.phpcomposer.com/ 这个是国内的composer网站 thinkphp5自带了composer.phar组件,如果没有安装,则需要进行安装 以下命令 ...

  9. [Selenium With C#学习笔记] Lesson-02 Web元素定位

    使用Selenium来做自动化测试,一般的流程是:查找定位元素--->操作元素--->断言,那么第一步我们需要能够完成查找并定位元素,Selenium目前提供了8种基本定位方法,可根据实际 ...

  10. bootstrap select2 参数详解

    Select2使用示例地址: https://select2.github.io/examples.html Select2参数文档说明: https://select2.github.io/opti ...