IOS地图自定义弹出框

Android 自定义高德地图主题样式 好久没有来更新博客了,今天我们的客户又提出了新的需求,要求地图需要自定义,于是我查遍了官方文档,却没找到自定义的方法,百度搜了一下,好吧,高德的方法过时了,于是呢,机缘巧合中,找到了这位大神的博客:Android 高德地图自定义地图 看日期还是前两个月更新的,所以方法差不多应该是最新的了。 这里写这篇博客,主要是要提醒大家,一是,他博客提到的方法,需要放在 aMap = mapV... 阅读详情

前言


在iOS上边使用地图库的同学肯定遇到过这样的问题:吹出框只能设置title和subtitle和左右的view,不管是百度地图还是高德地图还是自带的google地图,只提供了这四个属性,如果想添加更多的view,只能自定义。可是,类库只能看到.h文件,.m都看不到,这让新手比较蛋疼,庞大的地图类库一时半会摸不着头脑,从头再学还需要时间,本文就教大家快速制作一个属于自己的 CalloutView!等你一步一步调通后,再回过头来使用系统自带的方法设置callout,就会领悟这个过程。




正文


Xcode版本:4.6.1


SDK版本:6.0 


百度地图版本:1.2.2(关于地图不必纠结,无论是百度还是高德还是google都是基于系统的MapKit,都是一样的)


demo模式:非ARC,使用storyboard。


demo资源:

http://download.csdn.NET/detail/mad1989/5252037


Step1

创建demo,并添加百度地图的静态类库,helloword能显示mapview


关于这一步我专门写了教程,这里就不再赘述,同样,关于如何使用自带的BMKPointAnnotation添加一个marker,我也不再说了,如果连这个你都不会,那么先去官网看一下基本教程。


Step2

实现三个委托方法:

这个方法类似tableview添加cell,都是创建annotation

[cpp]  view plain copy
  1. #pragma mark  
  2. #pragma mark - BMKMapview delegate  
  3. -(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation;  


这个方法在点击地图marker时所触发(并显示callout)
[cpp]  view plain copy
  1. -(void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view;  


这个方法在点击地图任意位置,相当于隐藏callout

[cpp]  view plain copy
  1. -(void)mapView:(BMKMapView *)mapView didDeselectAnnotationView:(BMKAnnotationView *)view;  



原理:地图上的marker是在viewForAnnoation里创建的,同时也会隐含的为我们创建一个CalloutView,就是自带的吹出框,只是我们看不到源码。其实这个吹出框(CalloutView)也是一个annotation,也会在viewForAnnotation里被创建,他的坐标应该和这个点的marker坐标一样,只要明白了这一点,就行了,marker和吹出框是两个不同的annotation,他们有同样的coordinate。


Step3

自定义一个Annotation,为了简单方便,我就直接继承了mapview自带的BMKPointAnnotation,这是一个经典的图钉marker。


在这里我添加了一个Dictionary属性,目的是为了自定义的CalloutView吹出框显示内容赋值,一会就明白了。



Step4

添加自定义Annotation到mapview

[cpp]  view plain copy
  1. //添加自定义Annotation  
  2.  CLLocationCoordinate2D center = {39.91669,116.39716};  
  3.   
  4. CustomPointAnnotation *pointAnnotation = [[CustomPointAnnotation alloc] init];  
  5. pointAnnotation.title = @"我是中国人";//因为继承了BMKPointAnnotation,所以这些title,subtitle都可以设置  
  6. pointAnnotation.subtitle = @"我爱自己的祖国";  
  7.   
  8. pointAnnotation.coordinate = center;  
  9. [mymapview addAnnotation:pointAnnotation];  
  10. [pointAnnotation release];  

在viewForanntion里,由于我对marker没太大要求,直接使用了 BMKPinAnnotationView(图钉),简单设置image属性为自己需要的图标,如下所示:


展示一个效果图:


显然CalloutView只能设置title和subtitle,无法满足我们的要求,那么继续下一步。


Step5

创建一个(自定义的CalloutView)的Annotation,相当于显示calloutView的annotation。

[注意] 继承自NSObject<BMKAnnotation>

CalloutMapAnnotation.h

[cpp]  view plain copy
  1. #import <Foundation/Foundation.h>  
  2. #import "BMapKit.h"  
  3.   
  4. @interface CalloutMapAnnotation : NSObject<BMKAnnotation>  
  5.   
  6.   
  7. @property (nonatomic) CLLocationDegrees latitude;  
  8. @property (nonatomic) CLLocationDegrees longitude;  
  9.   
  10.   
  11. @property(retain,nonatomic) NSDictionary *locationInfo;//callout吹出框要显示的各信息  
  12.   
  13.   
  14.   
  15. - (id)initWithLatitude:(CLLocationDegrees)lat andLongitude:(CLLocationDegrees)lon;  
  16.   
  17.   
  18.   
  19. @end  

CalloutMapAnnotation.m

[cpp]  view plain copy
  1. #import "CalloutMapAnnotation.h"  
  2.   
  3. @implementation CalloutMapAnnotation  
  4.   
  5.   
  6. @synthesize latitude;  
  7. @synthesize longitude;  
  8. @synthesize locationInfo;  
  9.   
  10. - (id)initWithLatitude:(CLLocationDegrees)lat  
  11.           andLongitude:(CLLocationDegrees)lon {  
  12.     if (self = [super init]) {  
  13.         self.latitude = lat;  
  14.         self.longitude = lon;  
  15.     }  
  16.     return self;  
  17. }  
  18.   
  19.   
  20. -(CLLocationCoordinate2D)coordinate{  
  21.   
  22.     CLLocationCoordinate2D coordinate;  
  23.     coordinate.latitude = self.latitude;  
  24.     coordinate.longitude = self.longitude;  
  25.     return coordinate;  
  26.       
  27.   
  28. }  
  29.   
  30.   
  31. @end  

这里设置了经纬度的属性,和一个init初始化经纬度的方法(经纬度=marker的经纬度),同样添加了一个Dictionary的属性,为了传递在CalloutView上内容的赋值,继续。


Step6

这一步我们创建自定义的View,想要什么布局就写什么样的布局,想要多少属性就加多少属性,这里我使用了code方式画了一个contentView,里面的子view使用Xib方式创建。

[注意:继承自BMKAnnotationView]


CallOutAnnotationView.h

[cpp]  view plain copy
  1. #import "BMKAnnotationView.h"  
  2. #import "BusPointCell.h"  
  3.   
  4. @interface CallOutAnnotationView : BMKAnnotationView  
  5.   
  6.   
  7. @property(nonatomic,retain) UIView *contentView;  
  8.   
  9. //添加一个UIView  
  10. @property(nonatomic,retain) BusPointCell *busInfoView;//在创建calloutView Annotation时,把contentView add的 subview赋值给businfoView  
  11.   
  12.   
  13. @end  

BusPointCell是ContentView里的subview,这个view就是显示各个组件,并赋不同的值

CallOutAnnotationView.m

[cpp]  view plain copy
  1. #import "CallOutAnnotationView.h"  
  2. #import <QuartzCore/QuartzCore.h>  
  3.   
  4.   
  5. #define  Arror_height 6  
  6.   
  7. @implementation CallOutAnnotationView  
  8. @synthesize contentView;  
  9. @synthesize busInfoView;  
  10.   
  11. - (id)initWithFrame:(CGRect)frame  
  12. {  
  13.     self = [super initWithFrame:frame];  
  14.     if (self) {  
  15.     }  
  16.     return self;  
  17. }  
  18.   
  19. -(void)dealloc{  
  20.     [contentView release];  
  21.     [busInfoView release];  
  22.     [super dealloc];  
  23. }  
  24.   
  25. -(id)initWithAnnotation:(id<BMKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier{  
  26.   
  27.       
  28.     self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];  
  29.     if (self) {  
  30.         self.backgroundColor = [UIColor clearColor];  
  31.         self.canShowCallout = NO;  
  32.         self.centerOffset = CGPointMake(0, -55);  
  33.         self.frame = CGRectMake(0, 0, 240, 80);  
  34.   
  35.         UIView *_contentView = [[UIView alloc] initWithFrame:CGRectMake(5, 5, self.frame.size.width-15, self.frame.size.height-15)];  
  36.         _contentView.backgroundColor   = [UIColor clearColor];  
  37.         [self addSubview:_contentView];  
  38.         self.contentView = _contentView;  
  39.         [_contentView release];  
  40.     }  
  41.     return self;  
  42.   
  43. }  
  44.   
  45. -(void)drawRect:(CGRect)rect{  
  46.   
  47.     [self drawInContext:UIGraphicsGetCurrentContext()];  
  48.       
  49.     self.layer.shadowColor = [[UIColor blackColor] CGColor];  
  50.     self.layer.shadowOpacity = 1.0;  
  51.     self.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);  
  52.       
  53.   
  54. }  
  55.   
  56. -(void)drawInContext:(CGContextRef)context  
  57. {  
  58.       
  59.     CGContextSetLineWidth(context, 2.0);  
  60.     CGContextSetFillColorWithColor(context, [UIColor colorWithRed:255.0/255.0 green:255.0/255.0 blue:255.0/255.0 alpha:1.0].CGColor);  
  61.       
  62.     [self getDrawPath:context];  
  63.     CGContextFillPath(context);  
  64.       
  65. }  
  66. - (void)getDrawPath:(CGContextRef)context  
  67. {  
  68.     CGRect rrect = self.bounds;  
  69.     CGFloat radius = 6.0;  
  70.       
  71.     CGFloat minx = CGRectGetMinX(rrect),  
  72.     midx = CGRectGetMidX(rrect),  
  73.     maxx = CGRectGetMaxX(rrect);  
  74.     CGFloat miny = CGRectGetMinY(rrect),  
  75.     // midy = CGRectGetMidY(rrect),  
  76.     maxy = CGRectGetMaxY(rrect)-Arror_height;  
  77.     CGContextMoveToPoint(context, midx+Arror_height, maxy);  
  78.     CGContextAddLineToPoint(context,midx, maxy+Arror_height);  
  79.     CGContextAddLineToPoint(context,midx-Arror_height, maxy);  
  80.       
  81.     CGContextAddArcToPoint(context, minx, maxy, minx, miny, radius);  
  82.     CGContextAddArcToPoint(context, minx, minx, maxx, miny, radius);  
  83.     CGContextAddArcToPoint(context, maxx, miny, maxx, maxx, radius);  
  84.     CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);  
  85.     CGContextClosePath(context);  
  86. }  
  87.   
  88.   
  89.   
  90. @end  

BusPointCell.h

想要多少label,就可以有多少label

[cpp]  view plain copy
  1. #import <UIKit/UIKit.h>  
  2.   
  3. @interface BusPointCell : UIView  
  4. @property (retain, nonatomic) IBOutlet UILabel *aliasLabel;  
  5. @property (retain, nonatomic) IBOutlet UILabel *speedLabel;  
  6. @property (retain, nonatomic) IBOutlet UILabel *degreeLabel;  
  7. @property (retain, nonatomic) IBOutlet UILabel *nameLabel;  
  8.   
  9. @end  

BusPointCell.m

[cpp]  view plain copy
  1. #import "BusPointCell.h"  
  2.   
  3. @implementation BusPointCell  
  4.   
  5. - (id)initWithFrame:(CGRect)frame  
  6. {  
  7.     self = [super initWithFrame:frame];  
  8.     if (self) {  
  9.   
  10.     }  
  11.     return self;  
  12. }  
  13. - (void)dealloc {  
  14.     [_aliasLabel release];  
  15.     [_speedLabel release];  
  16.     [_degreeLabel release];  
  17.     [_nameLabel release];  
  18.     [super dealloc];  
  19. }  
  20. @end  

BusPointCell.xib




Step7

自定义的CalloutView都准备妥当,现在就是要实现他们的部分了,简单说一下原理,在didSelectAnnotationView函数里创建并添加calloutview的annotation(CalloutMapAnnotation),然后在viewForAnnotation函数内实例化要显示的calloutview(CallOutAnnotationView)


首先声明一个局部变量CalloutMapAnnotation *_calloutMapAnnotation;

在didSelectAnnotationView函数内添加如下代码:

[cpp]  view plain copy
  1. //CustomPointAnnotation 是自定义的marker标注点,通过这个来得到添加marker时设置的pointCalloutInfo属性  
  2. CustomPointAnnotation *annn = (CustomPointAnnotation*)view.annotation;  
  3.   
  4.   
  5. if ([view.annotation isKindOfClass:[CustomPointAnnotation class]]) {  
  6.       
  7.     //如果点到了这个marker点,什么也不做  
  8.     if (_calloutMapAnnotation.coordinate.latitude == view.annotation.coordinate.latitude&&  
  9.         _calloutMapAnnotation.coordinate.longitude == view.annotation.coordinate.longitude) {  
  10.         return;  
  11.     }  
  12.     //如果当前显示着calloutview,又触发了select方法,删除这个calloutview annotation  
  13.     if (_calloutMapAnnotation) {  
  14.         [mapView removeAnnotation:_calloutMapAnnotation];  
  15.         _calloutMapAnnotation=nil;  
  16.           
  17.     }  
  18.     //创建搭载自定义calloutview的annotation  
  19.     _calloutMapAnnotation = [[[CalloutMapAnnotation alloc] initWithLatitude:view.annotation.coordinate.latitude andLongitude:view.annotation.coordinate.longitude] autorelease];  
  20.       
  21.     //把通过marker(ZNBCPointAnnotation)设置的pointCalloutInfo信息赋值给CalloutMapAnnotation  
  22.     _calloutMapAnnotation.locationInfo = annn.pointCalloutInfo;  
  23.       
  24.     [mapView addAnnotation:_calloutMapAnnotation];  
  25.   
  26.       
  27.       
  28.     [mapView setCenterCoordinate:view.annotation.coordinate animated:YES];  
  29.       
  30. }  


其次,要在viewForAnnotation里创建我们的calloutview(CallOutAnnotationView),添加如下代码:

[cpp]  view plain copy
  1. else if ([annotation isKindOfClass:[CalloutMapAnnotation class]]){  
  2.       
  3.     //此时annotation就是我们calloutview的annotation  
  4.     CalloutMapAnnotation *ann = (CalloutMapAnnotation*)annotation;  
  5.       
  6.     //如果可以重用  
  7.     CallOutAnnotationView *calloutannotationview = (CallOutAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"calloutview"];  
  8.       
  9.     //否则创建新的calloutView  
  10.     if (!calloutannotationview) {  
  11.         calloutannotationview = [[[CallOutAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"calloutview"] autorelease];  
  12.   
  13.         BusPointCell *cell = [[[NSBundle mainBundle] loadNibNamed:@"BusPointCell" owner:self options:nil] objectAtIndex:0];  
  14.           
  15.         [calloutannotationview.contentView addSubview:cell];  
  16.         calloutannotationview.busInfoView = cell;  
  17.     }  
  18.       
  19.     //开始设置添加marker时的赋值  
  20.     calloutannotationview.busInfoView.aliasLabel.text = [ann.locationInfo objectForKey:@"alias"];  
  21.     calloutannotationview.busInfoView.speedLabel.text = [ann.locationInfo objectForKey:@"speed"];  
  22.     calloutannotationview.busInfoView.degreeLabel.text =[ann.locationInfo objectForKey:@"degree"];  
  23.     calloutannotationview.busInfoView.nameLabel.text =  [ann.locationInfo objectForKey:@"name"];  
  24.       
  25.     return calloutannotationview;  
  26.       
  27. }  

[注意]在添加marker的判断里一定要设置marker annotation.canShowCallout =NO; 否则点击marker会默认显示系统的吹出框



Step8

calloutview的annotation也创建和添加了,接下来我们就设置一下marker对应吹出框的数据:



然后运行一下:



哈哈!搞定了吧,具体布局可以自己通过code方式,或xib方式设计,目前点击marker能显示了,可是点击其它区域还是无法显示,所以我们在didDeselectAnnotationView方法里还需要判断一下,remove掉。


[cpp]  view plain copy
  1. -(void)mapView:(BMKMapView *)mapView didDeselectAnnotationView:(BMKAnnotationView *)view{  
  2.       
  3.     if (_calloutMapAnnotation&&![view isKindOfClass:[CallOutAnnotationView class]]) {  
  4.   
  5.         if (_calloutMapAnnotation.coordinate.latitude == view.annotation.coordinate.latitude&&  
  6.             _calloutMapAnnotation.coordinate.longitude == view.annotation.coordinate.longitude) {  
  7.             [mapView removeAnnotation:_calloutMapAnnotation];  
  8.             _calloutMapAnnotation = nil;  
  9.         }  
  10.           
  11.           
  12.     }  
  13.   
  14. }  



最后


之所以在显示marker的annotation[本文为CustomPointAnnotation]和显示calloutview的annotation[本文为CalloutMapAnnotation]里各添加一个Dictionary,就是要在点击时通过marker传递数据,添加时通过calloutview的annotation实例来设置每一个属性的数据,已达到不同的maker,显示不同的数据。


可能我的过程不是太清晰,自己仔细研究一下这三个函数和mapview自带的callout调用过程,便会明白。



dmeo地址:http://download.youkuaiyun.com/detail/mad1989/5252037

30、MapKit 框架使用指南 本博客详细介绍了如何使用 MapKit 框架在 iOS 应用中集成地图功能。内容涵盖地图视图的配置、地图类型设置、用户位置跟踪、标注的添加与管理、自定义标注视图与弹出框、以及地图视图的委托方法。通过示例应用演示了如何获取当前位置、缩放地图、投放图钉并显示地址信息,帮助开发者快速掌握 MapKit 的核心功能与最佳实践。 阅读详情

相关推荐

Arcgis for android实现弹框查询属性表数据

使用CallOut实现弹框查询feature服务里的属性表里的数据,只需要更改服务地址即可。

ios 一步一步学会自定义地图吹出框(CalloutView)-->(百度地图,高德地图,google地图)

前言 在ios上边使用地图库的同学肯定遇到过这样的问题:吹出框只能设置title和subtitle和左右的view,不管是百度地图还是高德地图还是自带的google地图,只提供了这四个属性,如果想添加更多的view,只能自定义。可是,类库只能看到.h文件,.m都看不到,这让新手比较蛋疼,庞大的地图类库一时半会摸不着头脑,从头再学还需要时间,本文就教大家快速制作一个属于自己的 Ca

iOS-董彬的专栏 1795

calloutview, 用于模拟UICalloutView的轻量级详图索引视图类.zip

calloutview, 用于模拟UICalloutView的轻量级详图索引视图类 概述SMCalloutView的目标是精确地复制 private UICalloutView系统控件。我们都喜欢在MKMapView中点击大头针时得到的"气泡"。 但是,很遗憾,在MKMapView之外的任何地方都不可能显示这个

高德地图(百度地图,Google地图)中自定义Annotation&CallOutView

本篇介绍如何在高德地图中自定义

程小龙 7160

Bellhop水声信道模型的仿真

Bellhop是一种基于射线追踪的水声信道模型,广泛用于预测水下环境中的声压场。它通过模拟声波在水中的传播路径,计算声场分布,适用于复杂的水下通信场景。

yt94832的博客 1312

iTunes登录协议逆向与自动化实现

本文详细解析了iTunes登录协议的逆向工程与自动化实现方法,涵盖请求体构造、签名生成和会话管理等关键技术。通过XML结构解析、X-Apple-ActionSignature生成原理及完整登录流程实现,帮助开发者高效完成iTunes自动化登录,提升工作效率。

weixin_26938645的博客 939

ios 高德地图 默认弹出吹出框(calloutView)

最近项目中用到高德地图,其中一个功能是自定义calloutView(吹出框),网上的相关教程博客确实很多,官网上的介绍也很详细,最后我是照着官网上的步骤一步步实现了。其过程还算顺利,然而就在我以为做完了的时候,却发现需要点一下地图上的小图钉(pointAnnotaion)才能显示calloutView。根据需求是需要默认就显示calloutView的,一个简单的想法是在创建annotationVi

u012950489的专栏 5386

用Python实现斗地主游戏(终端版)

马上就要过年了 大家也都放假了吧 过年必不可少的活动 打牌! 今天带大家来写一份斗地主 (又是好多天没怎么更新,忙成狗啊) 那么实现一个斗地主呢 我们肯定要先完善卡牌系统 from collections import Counter import numpy as np import itertools def cmp_to_key(mycmp): 'Convert a cmp= function into a key= function' class K: def _

Miku_wx的博客 9855

IOS 调用百度地图(SDK) 进行定位以及自定义位置弹出框(气泡)

集成百度地图SDK并获取当前位置和目标位置,更换大头针的样式,自定义大头针上方的气泡弹出框,配置提示本应用程序是否获取当前位置定位服务提示框

qq_30608949的博客 4707

RI-CLPM vs CLPM:什么时候该用随机截距交叉滞后模型?

本文深入对比了交叉滞后模型(CLPM)与随机截距交叉滞后模型(RI-CLPM)的核心差异与应用场景。RI-CLPM通过分离个体间稳定特质与个体内动态波动,能更纯净地估计变量间的动态因果关系,避免CLPM可能存在的混淆。文章提供了清晰的模型选择决策框架,并辅以Mplus语法示例,帮助研究者根据变量特质稳定性与研究问题,正确选用模型以确保结论的严谨性。

weixin_29276847的博客 303

状态机与RTOS的融合实践:如何避免‘状态爆炸’并提升系统响应

本文探讨了状态机与RTOS的融合实践,重点介绍了如何通过层次化状态机、表驱动设计等策略避免状态爆炸问题,并优化任务调度与事件处理机制,从而显著提升嵌入式系统的响应速度和可靠性。

net55的博客 106

iOS开发:高德地图自定义不同的标记点

我一共添加了四种Annotation:起点、终点、附近的人、定位蓝点 不同的Annotation需要用不同的标注图标。 定义PointAnnotation #pragma mark - MAPointAnnotation - (MAPointAnnotation *)startAnnotation { if (_startAnnotation == nil) { _s...

谷歌首席程序员的博客 4267

RK3588开发板实战:从零开始移植Ubuntu 24.04(讯为SDK版)

本文详细介绍了如何在RK3588开发板上从零开始移植Ubuntu 24.04系统(讯为SDK版),涵盖开发环境准备、SDK解析、根文件系统定制、驱动适配、系统集成与烧录等全流程。通过实战案例,帮助开发者快速掌握RK3588开发板的系统移植技巧,适用于嵌入式开发与定制化Linux系统构建。

sand8的博客 436

IOS 自定义地图弹出框

前言 在ios上边使用地图库的同学肯定遇到过这样的问题:吹出框只能设置title和subtitle和左右的view,不管是百度地图还是高德地图还是自带的google地图,只提供了这四个属性,如果想添加更多的view,只能自定义。可是,类库只能看到.h文件,.m都看不到,这让新手比较蛋疼,庞大的地图类库一时半会摸不着头脑,从头再学还需要时间,本文就教大家快速制作一个属于自己的 Ca

花海的博客 2523

机器视觉检测到底怎么做,经验分享

笔者做机器视觉检测已经有五六年了,也算是对机器视觉的检测技术有了一定的掌握。总的来说,基于机器视觉的检测技术主要包含三个部分:视觉采集模块、后台分析模块和动作决策模块。这几个分类,跟教科书上的有较大差异,很多同学觉得我在杜撰。笔者也不作反驳,因为这是笔者这些年工作经验的总结,自然区别于教科书。下面我们分开来讲这几个模块,同时会把笔者之前的论文做个推荐总结。 所有文章均可在博主的主页中找到,若无法找到,可以用搜索工具。博主的主页: https://blog.youkuaiyun.com/Aoulun 第..

Aoulun的博客 8677

华为交换机密码策略配置避坑指南:明文/密文、长度、复杂度,一个命令就出错

本文详细解析华为交换机密码策略配置的关键要点,包括密码长度、复杂度及等保合规要求。通过实战案例揭示常见配置误区,如明文/密文密码格式差异、复杂度检查联动机制等,帮助网络工程师避免安全漏洞。特别针对等保二级和三级要求,提供可直接落地的安全加固方案。

weixin_30879169的博客 368

ios 百度地图自定义地图弹出框(CalloutView)

前言 自己之前没怎么用过地图,这两天自己来使用地图,研究了下大头针的弹出框,一开始觉得很蛋疼,后来看看别人的代码和博客,也差不多,主要大家要理解原理! 在ios上边使用地图库的同学肯定遇到过这样的问题:弹出框只能设置title和subtitle和左右的view,不管是百度地图还是高德地图还是自带的google地图,只提供了这四个属性,如果想添加更多的view,只能自定义。可是,类库只能看到.h

xdRao的专栏 4079

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

百度地图android弹出窗口,集成百度地图自定义弹出框

项目介绍:集成百度地图自定义弹出框ViewController.m 的代码:[Objective-C] 查看源文件 复制代码#import "ViewController.h"#import #import #import @implementation ViewController- (void)viewDidLoad {[super viewDidLoad];//初始化BMKLocationS...

weixin_42576467的博客 612

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ios MapKit学习笔记

1、概述 插入MapView,设置Delegate(一般为Controller),Annotati*****记录兴趣位置点(AnnotationView用来显示兴趣位置点),annotation是可选的,选中的annotation会显示callout,用来显示信息。 2、设置地图显示类型: mapView.mapType = MKMapTypeStandard; mapView.map

code life 457

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

高德地图关闭气泡高德android,多信息弹窗/气泡效果

使用场景自定义AnnotationView实现多个气泡弹窗效果。当用户需要在地图上显示多个气泡弹窗效果时,利用该功能可以实现。用到产品核心类/接口类接口说明版本AMapSearchAPI- (void)AMapPOIKeywordsSearch:(AMapPOIKeywordsSearchRequest *)request;;POI 关键字查询接口V4.0.0版本起MAInfowindowView...

weixin_33680112的博客 722

MapKit 地图

参考 http://blog.youkuaiyun.com/pjk1129/article/details/7492166  1 地图显示区域定位 CLLocationCoordinate2D center = CLLocationCoordinate2DMake(31.228656,121.483383);//定义初始坐标点 //显示区域调整 MKCoordinateRe

wenluma的专栏 713

高德地图服务测试点评

高德地图是一款功能齐全,支持离线的常用地图服务。其具备以下特点: 1.高德地图是一款免费使用的跨Android,IOS,WindowsPHONE三大移动平台的地图服务 2.其最新版本的Android库文件AMap_Android_3DMap_Lib_V2.2.0大小为1.77MB, AMap_Android_2DMap_Lib_V2.2.0大小为572 KB. 3.高德提供2D,3D离线地...

u014721937的专栏 684

百度地图 iOS SDK - 新版本上线,支持iOS8、arm64、iPhone6

百度地图 iOS SDK v2.5.0 版本于10月21日下午顺利完成了新版本的上线工作,该版本主要针对 iOS8 的定位功能进行了适配;对 arm64 CPU 进行了适配;对 iPhone6 及 iPhone6 plus 的屏幕显示进行了相关的适配工作。 相信新版本的发布会给更多开发者带来开发上的便利! 新版本更新日志如下: 2014年10月21日 百度地图iOS SDK v2.5

凌晨零点零零 5788

iOS百度地图开发笔记(三)

这篇文章主要介绍LBS检索功能及如何替换大头针图片及如何自定义弹出框。

怀可的博客 1831

IOS中显示自带地图(高德地图)的大头针

//设置一个位置坐标     CLLocationCoordinate2D coordinate;     coordinate.longitude = 110;     coordinate.latitude = 40;          /*  IOS显示系统带的大头针     MKPointAnnotation *annotation = [[MKPointAnnotation

开发仔XG 4600

flutter_map_marker_popup:让地图标记弹出变得简单

flutter_map_marker_popup:让地图标记弹出变得简单 项目介绍 在现代的移动应用开发中,地图功能是不可或缺的组成部分。flutter_map_marker_popup 是一个专为 Flutter 开发的开源项目,它为开发者提供了一种简单直观的方式来在地图上添加标记弹出框。通过结合 flutter_map 地图库,这个项目使得在地图上实现点击标记弹出信息的功能变得轻而易举。 项目...

gitblog_00561的博客 692
上一篇: swift3.0 入门学习笔记之一 基础篇
下一篇: iOS In-App Purchase 内购之问题总结
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值