为什么高德地图 setfitview不走viewForAnnotation这个方法

3727人阅读
本人刚学习ios开发,有很多不懂的地方,期待和大家的交流;也是第一次写博客,写得不好的地方请多多包涵。
最近一段时间在开发一个跑步软件,要用到高德地图来显示用户当前位置,记录用户跑步轨迹,下面就说说这个高德地图的使用和一些需要注意的地方吧。
一.配置工程
高德地图我是用cocoaPods来管理的,cocoaPods不知道怎么使用的可以去百度一下,网上很多教程
(1)因为只是显示用户的位置,所以没必要使用3D地图,就使用的'AMap2DMap',先配置工程,既然是跑步,地图肯定得后台运行,在配置工程里面点击TARCETS-&Capabilities,选择下图所示的Background Modes,勾选Location updates
(2)在plist文件中加入‘NSLocationWhenInUseUsageDescription’或‘NSLocationAlwaysUsageDescription’字段,它是一个string类型的,值就是提示用户开启定位之内的内容(如下图所示)
NSLocationWhenInUseUsageDescription
表示应用在前台的时候可以搜到更新的位置信息。
NSLocationAlwaysUsageDescription
表示应用在前台和后台(suspend或terminated)都可以获取到更新的位置数据
iOS9为了增强数据访问安全,将所有的http请求都改为了https,为了能够在iOS9中正常使用地图SDK,请在&Info.plist&中进行如下配置,否则影响SDK的使用:
&key&NSAppTransportSecurity&/key&
&key&NSAllowsArbitraryLoads&/key&
如下图所示:
在iOS9中为了能正常调起高德地图App的功能,必须在&Info.plist&中将高德地图App的URL scheme列为白名单,否则无法调起,配置如下:
&key&LSApplicationQueriesSchemes&/key&
&string&iosamap&/string&
如下图所示:
到这里工程基本配置完成。
二.接下来就是代码部分
(1)在AppDelegate.m中导入如下头文件
&#import&&MAMapKit/MAMapKit.h&
在地图初始化之前- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法里面添加如下代码,配置之前在官网上申请的Key(如果在高德地图官网没有申请应用获取到key值,你还得去高德官网申请一个应用获取key值)
[MAMapServices sharedServices].apiKey = @&你申请的key&;
如果出现如下情况,就是你申请的key值与你工程的Bundle Identifier不匹配,需要去高德官网重新配置一下
(2)接下来就是初始化地图,在需要初始化的ViewController里导入头文件
& &#import&&MAMapKit/MAMapKit.h&
再初始化地图
//初始化地图
& &MAMapView *mapView = [[MAMapView alloc] initWithFrame:self.view.frame];
& &//是否显示用户位置
& &mapView.showsUserLocation = YES;
& &//设置代理
& &mapView.delegate =
& &//加载mapView
& &[self.view addSubview:mapView];
如果需要后台定位,还得设置下面两个属性
//设置允许后台定位参数,保持不会被系统挂起_mapView.pausesLocationUpdatesAutomatically&=&NO;//是否允许后台定位。iOS9(含)以上系统需设置_mapView.allowsBackgroundLocationUpdates& & =&YES
设置定位精度,默认为kCLLocationAccuracyBest
_mapView.desiredAccuracy = kCLLocationAccuracyB
设定定位的最小更新距离,默认为kCLDistanceFilterNone
_mapView.distanceFilter
= kCLDistanceFilterN
因为这里设置的是kCLDistanceFilterNone,会根据任何移动而定位。客户反应这样定位很耗电,而android那边的机制可以设置每隔多少秒定一次位,ios不支持这种机制,ios只要触发两个条件就会定位,一个是上面那个属性,比如设置10米定一次位_mapView.distanceFilter = 10.0f,还有一个是设备偏移了多少度
&//设备转动90°就会定一次位
&_mapView.headingFilter& =&90;
通过这两个属性可以设置何时定位,上面两个属性只要满足一个就会定位,可以同时设置,也可以单独设置,看你的需求
这样就简单的初始化了一个地图
它每定一次位就会走下面这个代理方法,我们一般在这个方法里操作事件,比如获取当前经纬度,速度等信息
&- (void)mapView:(MAMapView&*)mapView didUpdateUserLocation:(MAUserLocation&*)userLocation updatingLocation: (BOOL)updatingLocation{
& & &//获取速度(m/s)& & &CGFloat&locationSpeed = userLocation.location.& & //当前坐标经纬度& &&CLLocationCoordinate2D&currentLocation =&userLocation.location.coordinate;& & &//有时候我们需要在界面上显示当前定位信号的强弱,高德地图没有直接判断信号强弱的参数,但系统有一个当前水平位置的准确度的属性,可以通过这个属性来判断信号的强弱& & &CGFloat&signal&& & = userLocation.location.horizontalAccuracy;& & &if&(signal&&&20)& & &{& & & &&//强& & &}& & &else&if&(signal&&&70)& & &{& & & &&//中& & &}else& & & {& & & & //差
(3)添加起点,终点
这个方法是自定义的方法,传入一个经纬度,一个标题
&- (void)mapViewAddAnnotation:(CLLocationCoordinate2D)location title:(NSString&*)title{& &&MAPointAnnotation&*pointAnnotation = [[MAPointAnnotation&alloc]&init];& & pointAnnotation.coordinate&=& & pointAnnotation.title&=& & //把pointAnnotation对象装入数组& &&[_array&addObject:pointAnnotation];}
向地图窗口添加一组标注,需要实现MAMapViewDelegate的-mapView:viewForAnnotation:函数来生成标注对应的View
[_mapView&addAnnotations:_array];
根据anntation生成对应的View
- (MAAnnotationView&*)mapView:(MAMapView&*)mapView viewForAnnotation:(id&MAAnnotation&)annotation{& &&if&([annotation&isKindOfClass:[MAPointAnnotation&class]]) {& & & &&static&NSString&*pointReuseIndentifier =&@&pointReuseIndentifier&;& & & &&MAPinAnnotationView&*annotationView = (MAPinAnnotationView&*)[mapViewdequeueReusableAnnotationViewWithIdentifier:pointReuseIndentifier];& & & &&if&(annotationView ==&nil) {& & & & & & annotationView = [[MAPinAnnotationView&alloc]&initWithAnnotation:annotation&reuseIdentifier:pointReuseIndentifier];& & & & }& & & & //做到这里时遇到一个问题,标注显示的图片是设置成自己想要的,地图上有两个标注,一个起点,一个终点,当地图上面只显示终点时,滑动到起点的时候起点图片就换成终点的图片了,这样两个标注都是终点的图片了,这是重用导致的,所以就用了以下方法来判断& & & &&if&([annotation.title&isEqualToString:@&起点&]) {& & & & & & annotationView.image&= [UIImage&imageNamed:@&map_开始&];& & & & }else&if&([annotation.title&isEqualToString:@&终点&]){& & & & & & annotationView.image&= [UIImage&imageNamed:@&map_结束&];& & & & }& & & &&//设置气泡可以弹出,默认为NO& & & & annotationView.canShowCallout&=&YES;& & & &&//设置标注动画显示,默认为NO& & & &&&annotationView.animatesDrop = YES;& & & &&//设置标注可以拖动,默认为NO& & & &&annotationView.draggable = YES;& & & &&return&annotationV& & }& &&return&nil;}
(4)绘制跑步轨迹
这个方法也是自定义的方法,传入一个经纬度,多个经纬度只需要for循环这个方法,一个一个的传入经纬度就可以构成跑步路径
-(void)addLine:(CLLocationCoordinate2D)location{
//构造折线数据对象,第一个经纬度和第二个经纬度& & CLLocationCoordinate2D commonPolylineCoords[2];
//第一个经纬度 startLocation
& & commonPolylineCoords[0] = startLocation;
//第二个经纬度 location
& & commonPolylineCoords[1] =
//构造折线对象
& & MAPolyline *commonPolyLine = [MAPolyline polylineWithCoordinates:commonPolylineCoords count:2];
//在地图上添加折线对象& & [_mapView addOverlay:commonPolyLine];}
根据overlay生成对应的View
- (MAOverlayView *)mapView:(MAMapView *)mapView viewForOverlay:(id&MAOverlay&)overlay{& & if ([overlay isKindOfClass:[MAPolyline class]]) {&& & & && & & & MAPolylineView *polylineView = [[MAPolylineView alloc] initWithPolyline:overlay];
//折线宽& & & & polylineView.lineWidth = 8.f;
//折线颜色& & & & polylineView.strokeColor = RGBA(180, 0, 0, 1);
//连接类型
& & & & polylineView.lineJoin = kCGLineJoinRound;
//端点类型
& & & & polylineView.lineCap = kCGLineCapRound;&& & & && & & & return polylineV& & }& & return nil;}
好了,以上便是我做地图的心得,有什么错误的地方请指点。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4459次
排名:千里之外
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'对于项目中遇到的高德地图标注问题,本人差点没有把十万个为什么给问个10万次。先说一下自己遇到的问题:
在地图加载完成后自动弹出 自定义的标注点 和 气泡框,然后当点击气泡框的时候,可以直接响应气泡框上的Button事件。
跟一些人一样,开始在网上查找相关的一些帖子,结果基本上都说的一些无关重要的。想想也是心塞塞,没办法,自己写demo测试,然后就写得让自己开始怀疑人生了。
好了废话不多说。直接上代码了。希望下次有人遇到会避免这个坑。
一、手动配置高德地图SDK。
这里是自己直接手动配置SDK,当然有一些麻烦。没办法,网络差,cocoapods又半天下不来。这里就说一些手动配置的步骤,其实更直接一点就去高德开发者中心去查看文档,有相当细的环节配置。高德SDK下载位置:()
下载完以后,直接拉入项目中自己需要的包,当然这里本人就只拉了三个需要的包:AMap3DMap、AMapFoundation、AmapLocation。
包创建好了,当然还没有完。继续手动添加依赖库,如果不添加依赖库编译不会成功,你就会看到无数个红色警告。然后找到工程。
添加完这个依赖库以后,再次编辑,嗯,没问题了。可以一下步了。
二、配置高德apiKey
关于高德的api,首先是需要账号的,so,没有账号就先注册一个,然后在控制台里去创建”我的应用”设置app的信息,提交以后会自动生成一个apiKey,复制保存这个key。在项目工程中会用到。这里说明一下。Bundle ID需要跟项目中的Bundle Identifier一致。因为一个key只能对应一个ID
三、配置AppDelegate
在AppDelegate.m文件中,先导入第三方库AMapFoundationKit/AMapFoundationKit.h然后在下面的方法中调用AMapServices 这个类,添加上之前申请的Key。
- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions {
[AMapServices sharedServices].apiKey = @”xxxxxxxxxxxxxxxxxx”;
工程到这里基本上就配置完成了,接下来可以开始愉快的写代码了。
四、创建地图
我在需要添加地图的控制器上,先在头部导入了需要的三方库MAMapKit/MAMapKit.h、AMapFoundationKit/AMapFoundationKit.h、AMapLocationKit/AMapLocationKit.h
然后再添加需要遵从的代理:MAMapViewDelegate、AMapLocationManagerDelegate。
接着,初始化地图,让地图默认加载到视图控制器上,
self.mapView = [[MAMapView alloc]initWithFrame:self.view.bounds];
//追踪模式
self.mapView.userTrackingMode = MAUserTrackingModeFollowWithH
//地图类型
self.mapView.mapType = MAMapTypeS
//遵循代理
self.mapView.delegate =
//不显示自己位置
self.mapView.showsUserLocation = NO;
[self.view addSubview: self.mapView];//把地图添加至view
到这里结束,运行工程就能愉快的跑起来了。会在界面上直接显示坐标为北京为中心的地图
五、显示自定义标注
这里就不再写关于系统自定义标注的创建方法,可以直接到高德官方文档去查看。关于标注,它的原理就是先有地图,再在地图上加载标注。高德SDK里有封装好了的一个类:MAPointAnnotation,在前面我调用了这个类,并且创建成了属性。所以直接初始化就行了。
self.pointAnnotaion = [[MAPointAnnotation alloc]init];
//设置标题
self.pointAnnotaion.title = @"酒店极品";
//设置副标题
self.pointAnnotaion.subtitle = @"蓝鲸鱼待久大酒店蓝鲸鱼待久大酒店蓝鲸鱼待久大酒店";
//设置经纬度
CLLocationCoordinate2D coordinate = {30.,104.};
//设置地图中心点
self.mapView.centerCoordinate =
//设置标注点的位置
self.pointAnnotaion.coordinate =
//地图放大级别
self.mapView.zoomLevel = 17;
[self.mapView addAnnotation:self.pointAnnotaion];
既然创建了标注,前面说需要加载自定义气泡,那也就需要去重写构造。调用下面的这个方法:
CustomAnnotationView是关于气泡的自定义样式,因为气泡本来是创建在标注的视图层上,所以在创建的时候需要去继承:MAAnnotationView这个类
在CustomAnnotationView.m文件里加载自定义气泡样式的CustomCalloutView,并且将数据传递给气泡CustomCalloutView上需要显示的label字符串。
创建自定义气泡View
在 .h 文件中创建需要传值的字符串、图片和按钮
在.m文件里实现自定义View的样式
#import "CustomCalloutView.h"
#define kArrorHeight
#define kTitleWidth
#define kTitleHeight
#define COLOR(R, G, B, A) [UIColor colorWithRed:R/255.0 green:G/255.0 blue:B/255.0 alpha:A]
@interface CustomCalloutView()
@property (nonatomic, strong) UILabel *subtitleL
@property (nonatomic, strong) UILabel *titleL
@property (nonatomic, strong) UIImageView *pointImge;
@implementation CustomCalloutView
//创建气泡背景样式
- (void)drawRect:(CGRect)rect
[self drawInContext:UIGraphicsGetCurrentContext()];
self.layer.shadowColor = [[UIColor blackColor] CGColor];
self.layer.shadowOpacity = 0.2;
self.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
- (void)drawInContext:(CGContextRef)context
CGContextSetLineWidth(context, 2.0);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
[self getDrawPath:context];
CGContextFillPath(context);
- (void)getDrawPath:(CGContextRef)context
CGRect rrect = self.
CGFloat radius = 6.0;
CGFloat minx = CGRectGetMinX(rrect),
midx = CGRectGetMidX(rrect),
maxx = CGRectGetMaxX(rrect);
CGFloat miny = CGRectGetMinY(rrect),
maxy = CGRectGetMaxY(rrect)-kArrorH
CGContextMoveToPoint(context, midx+kArrorHeight, maxy);
CGContextAddLineToPoint(context,midx, maxy+kArrorHeight);
CGContextAddLineToPoint(context,midx-kArrorHeight, maxy);
CGContextAddArcToPoint(context, minx, maxy, minx, miny, radius);
CGContextAddArcToPoint(context, minx, minx, maxx, miny, radius);
CGContextAddArcToPoint(context, maxx, miny, maxx, maxx, radius);
CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);
CGContextClosePath(context);
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
self.backgroundColor = [UIColor clearColor];
[self initSubViews];
//自定义样式
- (void)initSubViews
// 添加图片,即商户图
self.pointImge = [[UIImageView alloc]initWithFrame:CGRectMake(10, 20, 16, 18)];
self.pointImge.backgroundColor = COLOR(102, 102, 102, 1.0);
[self addSubview:self.pointImge];
// 添加标题,即商户名
self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(35, 8, kTitleWidth, kTitleHeight)];
self.titleLabel.font = [UIFont boldSystemFontOfSize:12];
self.titleLabel.textColor = COLOR(102, 102, 102, 1.0);
self.titleLabel.text = @"titletitletitletitle";
[self addSubview:self.titleLabel];
// 添加副标题,即商户地址
self.subtitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(35 ,5, kTitleWidth, kTitleHeight+30)];
self.subtitleLabel.numberOfLines = 0;//表示label可以多行显示
self.subtitleLabel.font = [UIFont boldSystemFontOfSize:12];
self.subtitleLabel.textColor = COLOR(51, 51, 51, 1.0);
self.subtitleLabel.text = @"subtitleLabelsubtitleLabelsubtitleLabel";
[self addSubview:self.subtitleLabel];
//添加按钮
self.button = [UIButton buttonWithType:UIButtonTypeCustom];
self.button.frame = self.
[self.button addTarget:self action:@selector(respondsToOnBtn) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:self.button];
- (void)setTitle:(NSString *)title
self.titleLabel.text =
- (void)setSubtitle:(NSString *)subtitle
self.subtitleLabel.text =
- (void)respondsToOnBtn{
NSLog(@"");
恩,写到这里代码基本上就算全部完成了。运行工程跑起来,也能看到默认的标注点了,but,气泡却没有自动弹出来,也响应不了按钮的点击事件。why? 然后就开始搜索技术贴,果然,有一些收获,有人说是因为本来气泡就写在了标注的视图上,层级关系不对,所以响应不到按钮,相对应的解决方法:在CustomAnnotationView.m文件中添加
- (UIView )hitTest:(CGPoint)point withEvent:(UIEvent )event
解释一下这个方法的原理:iOS系统检测到手指触摸(Touch)操作时会将其放入当前活动Application的事件队列,UIApplication会从事件队列中取出触摸事件并传递给key window(当前接收用户事件的窗口)处理,window对象首先会使用hitTest:withEvent:方法寻找此次Touch操作初始点所在的视图(View),即需要将触摸事件传递给其处理的视图,称之为hit-test view。
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *view = [super hitTest:point withEvent:event];
if (view == nil) {
CGPoint tempoint = [self.calloutView.button convertPoint:point fromView:self];
if (CGRectContainsPoint(self.calloutView.button.bounds, tempoint))
view = self.calloutView.
这里设置了,按道理说,应该能够响应气泡层的按钮事件了。可是,地图上应该先弹出气泡,才能响应按钮事件。到这里,我又卡住了。然后直接在MAAnnotation代理中查看了相关代理方法。发现了有一个selected 的属性,瞬间欣喜如狂,在这下面加上了这个选中的属性。再次运行Demo.有一种感觉自己很聪明的傲娇。结果,地图上确实能够显示标注了,可是却点不动,而且点击气泡以外的View位置,居然气泡不消失了。what?这又是怎么回事…..
然后,在经历了多次测试后发现,气泡要默认弹出显示在地图上,是需要加载定位这个属性所调用的方法。在初始化加载地图的后面补上这段代码。
self.locationManager = [[AMapLocationManager alloc]init];//获取定位创建个人坐标
self.locationManager.delegate =
self.locationManager.desiredAccuracy = kCLLocationAccuracyHundredM//定位精确度在10米以内
//单次定位
[self.locationManager requestLocationWithReGeocode:YES completionBlock:^(CLLocation *location, AMapLocationReGeocode *regeocode, NSError *error) {
if (location) {
_pointAnnotaion = [[MAPointAnnotation alloc]init];
_pointAnnotaion.title = @"蓝鲸鱼待久大酒店蓝鲸鱼待久大酒店蓝鲸鱼待久大酒店";
CLLocationCoordinate2D coordinate = {30.,104.};
_mapView.centerCoordinate =
_pointAnnotaion.coordinate =
_mapView.zoomLevel = 17;
[self.mapView addAnnotation:self.pointAnnotaion];
//默认选中标注数据对应的view (同时在地图 MAMapViewDelegate方法中,去掉selected这个选中)
[self.mapView selectAnnotation:self.pointAnnotaion animated:YES];
然后就可以完全实现自己想要的效果了。
注:以上均为个人的实现方法和建议,如果有更好的方法,欢迎回复讨论。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:5859次
排名:千里之外
(1)(1)(1)(1)(1)(5)(7)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'Pages: 1/2
主题 : 百度地图开发:如何在弹出的泡泡视图中点击事件然后动态修改这个annotationview
级别: 新手上路
可可豆: 52 CB
威望: 52 点
在线时间: 82(时)
发自: Web Page
来源于&&分类
百度地图开发:如何在弹出的泡泡视图中点击事件然后动态修改这个annotationview&&&
更详细的问题描述: 就是想有没有什么办法在外部捕获那个annotationView,注意到了有一个viewForAnnotation的方法,但还是没能成功;设计效果: 点击大头针的弹出泡泡视图中点击“选择”按钮,会触发两个变化: 1.按钮变成“取消选择”   2.对应的大头针图标上出现一个勾选的图片求高手指教,接触百度地图四五天了,因为项目比较急,所以发帖求救
摊位上一朵艳阳,我悄悄出现你身旁,你慌乱的模样,我微笑安静欣赏
级别: 新手上路
可可豆: 52 CB
威望: 52 点
在线时间: 82(时)
发自: Web Page
点击annotationView才会调用MapView的相关代理方法,而点击按钮是做不到的,这样也就没办法做到重新加载这个annotationView,即使这个View的某些需要修改的属性已经得到了修改
摊位上一朵艳阳,我悄悄出现你身旁,你慌乱的模样,我微笑安静欣赏
级别: 新手上路
可可豆: 52 CB
威望: 52 点
在线时间: 82(时)
发自: Web Page
也尝试过给annotation添加一个tag属性,然后在外部遍历Mapview的所有annotations,找到对应tag的annotation,再调用viewForAnnotation方法返回一个annotationView,这样就可以修改annotationView的属性,但还是跟上面说的那样,没办法将这个新改变的属性加载到mapView中
摊位上一朵艳阳,我悄悄出现你身旁,你慌乱的模样,我微笑安静欣赏
级别: 新手上路
可可豆: 52 CB
威望: 52 点
在线时间: 82(时)
发自: Web Page
额,难道看官都不提示一下吗
摊位上一朵艳阳,我悄悄出现你身旁,你慌乱的模样,我微笑安静欣赏
级别: 新手上路
UID: 319131
可可豆: 24 CB
威望: 22 点
在线时间: 58(时)
发自: Web Page
我之前做过点击一个大头针,这个大头针变为选中状态。你这个跟我的确实不一样,但是,你说的有个地方我不是很理解,“没办法将这个新改变的属性加载到mapView中 ”。百度地图实在调用[_mapView addAnnotation:annotation];这句代码的时候才触发- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id&BMKAnnotation&)annotation方法的。所以,即使你已经加载了大头针,但是如果在外部获取到点击了的大头针,就能改变这个大头针的样式。所以,第一,你要能再点击paopaoView的时候获取到这个paopaoView对应的大头针,你可以定义一个全局变量,在点击大头针的时候,你就把这个全局变量指向被点击的这个大头针。然后在paopaoView的点击方法中,通过这个全局变量操作大头针改变他的样式。这个变化是应该能实时显示在地图中的。你先试试,不行再讨论。
级别: 骑士
UID: 300379
可可豆: 889 CB
威望: 795 点
在线时间: 260(时)
发自: Web Page
&&&&&& 你要改变大头针要把原来的标注删掉,重新添加,不然修改是不会变化的
级别: 新手上路
可可豆: 52 CB
威望: 52 点
在线时间: 82(时)
发自: Web Page
回 4楼(yake_099) 的帖子
我的那句话的意思其实就是楼下这哥们的意思,如果他说的没错的话,也就是只有通过删除再加载的方式才能让变更的属性展现出来
摊位上一朵艳阳,我悄悄出现你身旁,你慌乱的模样,我微笑安静欣赏
级别: 新手上路
可可豆: 52 CB
威望: 52 点
在线时间: 82(时)
发自: Web Page
回 5楼(qq) 的帖子
问题描述:初始状态和选择后状态
摊位上一朵艳阳,我悄悄出现你身旁,你慌乱的模样,我微笑安静欣赏
级别: 新手上路
可可豆: 52 CB
威望: 52 点
在线时间: 82(时)
发自: Web Page
怎么图片传不上去
图片:2.png
摊位上一朵艳阳,我悄悄出现你身旁,你慌乱的模样,我微笑安静欣赏
级别: 新手上路
可可豆: 52 CB
威望: 52 点
在线时间: 82(时)
发自: Web Page
回 5楼(qq) 的帖子
先remove掉,然后再将annotation加载到mapview,,这样它就自动调用- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id&BMKAnnotation&)annotation方法?理论上这样应该是没有问题。可现在的问题是我没办法更新泡泡中的按钮title,难道非得删除完了annotation,在重新加载,然后再点击大头针才会显示泡泡中的按钮文字为“取消选择”,而没办法做到在点击按钮的瞬间就更新泡泡中的按钮title吗?求解答
摊位上一朵艳阳,我悄悄出现你身旁,你慌乱的模样,我微笑安静欣赏
Pages: 1/2
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版}

我要回帖

更多关于 高德地图amapnaviview 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信