自2018年10月18日起,高德开发者论坛除车机板块外,其他板块将停止发帖与维护,如您有使用问题请 提交工单 联系我们,感谢您的理解。

123
返回列表 发新帖
楼主: xxfore
打印 上一主题 下一主题

[使用疑问] 地图标注和路径

[复制链接]
最佳答案
0 

14

主题

55

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
21#
 楼主| 发表于 2016-3-26 00:17:07 | 只看该作者
尧_月 发表于 2016-3-25 10:37
有可能是之前异步添加的在你delegate设置nil的时候才添加进来,这个时候就大头针了。

再次添加annotation ...

哦 我明白您说的意思了,是说我上一次进来的时候 发出的异步请求的 request 在第二次进入到这个界面self.delegate 还是nil的时候添加上的么?
我尝试一下
我以为我一眼就能看穿生活,结果生活给了我响亮的一耳光
回复 支持 反对

使用道具 举报

最佳答案
0 

14

主题

55

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
22#
 楼主| 发表于 2016-3-27 10:47:05 | 只看该作者
尧_月 发表于 2016-3-25 10:37
有可能是之前异步添加的在你delegate设置nil的时候才添加进来,这个时候就大头针了。

再次添加annotation ...

但是吧...我的异步操作是在ViewDidAppear里做的,假设第一次进来的时候 发出了这个异步request 然后退出这个界面再进来的时候 一开始delegate是nil的时候添加了上次异步request回来的点.但是我这次进来的 异步操作的 request会继续添加点啊.这样最后应该还是正常的吧?
我以为我一眼就能看穿生活,结果生活给了我响亮的一耳光
回复 支持 反对

使用道具 举报

最佳答案
510 

8

主题

4511

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10082
23#
发表于 2016-3-28 14:42:02 | 只看该作者
继续添加那么点就会多了,一部分对一部分不对。你可以看看数量对不对。
hello amap!
回复 支持 反对

使用道具 举报

最佳答案
0 

14

主题

55

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
24#
 楼主| 发表于 2016-3-28 20:56:37 | 只看该作者
尧_月 发表于 2016-3-28 14:42
继续添加那么点就会多了,一部分对一部分不对。你可以看看数量对不对。
...

数量是正确的,现在发现一个情况,有一次可能是网络原因当时进去之后点没有加载出来(异步),然后这个时候我点击界面上一个按钮发起了另一个异步请求 ,请求的数据回来了 添加到地图上就是大头针了,按说这个时候delegate 已经设置过了, home键再回到app就正常了。
我以为我一眼就能看穿生活,结果生活给了我响亮的一耳光
回复 支持 反对

使用道具 举报

最佳答案
510 

8

主题

4511

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10082
25#
发表于 2016-3-29 10:59:30 | 只看该作者
是home之后回来大头针就变了?

你的viewForAnnotation是怎么实现的?
hello amap!
回复 支持 反对

使用道具 举报

最佳答案
0 

14

主题

55

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
26#
 楼主| 发表于 2016-3-29 14:22:49 | 只看该作者
尧_月 发表于 2016-3-29 10:59
是home之后回来大头针就变了?

你的viewForAnnotation是怎么实现的?

是,一开始是显示大头针并且没有连线,等按了home键再返回annotation也显示正常,连线也显示正常了。
是不是和ViewForAnnotation的实现没关呢,就是self.mapView.delegate的问题吧?
viewForAnnotation的实现如下
  1. - (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation
  2. {
  3.     if ([annotation isKindOfClass:[LocationPointAnnotation class]]) {
  4.         static NSString *reuseIndetifier = @"startAnnotationReuseIndetifier";
  5.         RouteHistoryAnnotationView *annotationView = (RouteHistoryAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:reuseIndetifier];
  6.         if (annotationView == nil) {
  7.             annotationView = [[RouteHistoryAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:reuseIndetifier];
  8.         }

  9.         // must set to NO, so we can show the custom callout view.
  10.         annotationView.canShowCallout   = NO;
  11.         annotationView.draggable        = NO;
  12.         annotationView.calloutOffset    = CGPointMake(0, 0);
  13.         LocationPointAnnotation *locationPointAnnotation = annotation;

  14.         if (annotation == _startLocation) {
  15.             //            annotationView.image = [UIImage imageNamed:@"history_setstart_@2x"];
  16.             annotationView.portrait = [UIImage imageNamed:@"history_setstart_@2x"];
  17.         } else if (annotation == _destinationPoint){
  18.             //            annotationView.image = [UIImage imageNamed:@"history_setend_@2x"];
  19.             annotationView.portrait = [UIImage imageNamed:@"history_setend_@2x"];
  20.         } else {
  21.             //            annotationView.image = [UIImage imageNamed:@"history_Arrow_right@2x"];
  22.             annotationView.portrait = [UIImage imageNamed:@"history_Arrow_right@2x"];
  23.         }

  24.         annotationView.mainLabelValue = locationPointAnnotation.location.mainAddress;
  25.         annotationView.subLabelValue = locationPointAnnotation.location.subAddress;
  26.         NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  27.         [dateFormatter setDateFormat:@"MM-dd HH:mm"];
  28.         [dateFormatter setTimeZone:[NSTimeZone systemTimeZone]];
  29.         NSString *_gen_time = [dateFormatter stringFromDate:[[NSDate alloc] initWithTimeIntervalSince1970:[locationPointAnnotation.location.gen_time doubleValue]]];
  30.         annotationView.dateLabelValue = _gen_time;
  31.         annotationView.radian = locationPointAnnotation.radian;

  32.         return annotationView;
  33.     }

  34.     return nil;
  35. }
复制代码
我以为我一眼就能看穿生活,结果生活给了我响亮的一耳光
回复 支持 反对

使用道具 举报

最佳答案
510 

8

主题

4511

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10082
27#
发表于 2016-3-30 18:50:48 | 只看该作者
按home键再返回还有这效果。。。。能整理个可以复现的Demo么。。
hello amap!
回复 支持 反对

使用道具 举报

最佳答案
0 

14

主题

55

帖子

396

积分

中级会员

Rank: 3Rank: 3

积分
396
28#
 楼主| 发表于 2016-3-31 22:53:43 | 只看该作者
尧_月 发表于 2016-3-30 18:50
按home键再返回还有这效果。。。。能整理个可以复现的Demo么。。

就像是 home之前 mapView的delegate是nil 再 home 再返回 delegate 正常了一样..
demo 我这两天整理出来一个吧..
我以为我一眼就能看穿生活,结果生活给了我响亮的一耳光
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|高德开发者论坛

Copyright ©2014 高德开发者论坛.All Rights Reserved |京ICP证070711号

意见反馈 常见问题 服务条款 联系我们
快速回复 返回顶部 返回列表