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

查看: 371|回复: 9
打印 上一主题 下一主题

[报错] [已解决]增加标注,位置出错

[复制链接]
最佳答案
0 

27

主题

53

帖子

273

积分

中级会员

Rank: 3Rank: 3

积分
273
跳转到指定楼层
楼主
发表于 2016-8-30 16:18:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
发表帖子
API/SDK版本号: 4.2
产品: 3D地图
手机型号: 爱疯5s
使用接口: 地图sdk
我先清除地图所有annotation,然后添加了一个新的annotation,并且设置地图setCenterCoordinate以新annotation为中心,
但是annotation出现在地图左上角(感觉是frame的0,0)位置处,我用手轻轻拖动地图一下,annotation会马上出现在地图中心的正确位置处,
感觉似乎得“刷新”那么一下,请问这是什么原因?


回复

使用道具 举报

最佳答案
510 

8

主题

4511

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10082
沙发
发表于 2016-8-31 17:04:39 | 只看该作者
每次都这样么?不论annotation是不是在可视范围内?
hello amap!
回复 支持 反对

使用道具 举报

最佳答案
0 

27

主题

53

帖子

273

积分

中级会员

Rank: 3Rank: 3

积分
273
板凳
 楼主| 发表于 2016-9-8 17:17:45 | 只看该作者
本帖最后由  于 2016-9-8 17:19 编辑
尧_月 发表于 2016-8-31 17:04
每次都这样么?不论annotation是不是在可视范围内?

前几天无法回复,见谅!
具体情况是,我工程是一个tabViewController,地图在tab1,我把annotation加在地图的中心位置,然后点击tab2切换页面,然后再点击tab1切换回来。切换回来后我先clear全部annotations,然后add一个新annotation,并设为地图中心。但这个新annotation要么不显示,要么显示在地图0,0(左上角)位置处,必须用手drag一下地图才正常。感觉之前版本没遇到这个问题,这是新版本才出现的,求解!
回复 支持 反对

使用道具 举报

最佳答案
510 

8

主题

4511

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10082
地板
发表于 2016-9-8 19:06:22 | 只看该作者
你这个描述比较复杂。。。能不能提供一个可复现的Demo,我们来调试一下。
hello amap!
回复 支持 反对

使用道具 举报

最佳答案
0 

27

主题

53

帖子

273

积分

中级会员

Rank: 3Rank: 3

积分
273
5#
 楼主| 发表于 2016-9-26 08:38:32 | 只看该作者
尧_月 发表于 2016-9-8 19:06
你这个描述比较复杂。。。能不能提供一个可复现的Demo,我们来调试一下。
...

我已经准备好demo,请问如何发给您?
回复 支持 反对

使用道具 举报

最佳答案
510 

8

主题

4511

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10082
6#
发表于 2016-9-27 10:25:25 | 只看该作者
上传网盘吧,贴个地址。最好用这个http://yunpan.taobao.com   其他的公司内不好访问。。
hello amap!
回复 支持 反对

使用道具 举报

最佳答案
0 

27

主题

53

帖子

273

积分

中级会员

Rank: 3Rank: 3

积分
273
7#
 楼主| 发表于 2016-9-28 09:29:34 | 只看该作者
尧_月 发表于 2016-9-27 10:25
上传网盘吧,贴个地址。最好用这个http://yunpan.taobao.com   其他的公司内不好访问。。 ...

链接  http://yunpan.taobao.com/s/2Qm9yxdgg6k
现象是点了tab2 再点tab1, 会出现标注丢失,必须拖下地图才出现。按我的记忆 好像以前版本没这现象,请查看一下。
回复 支持 反对

使用道具 举报

最佳答案
510 

8

主题

4511

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10082
8#
发表于 2016-9-29 16:32:08 | 只看该作者
首先,地图创建的时候不要设置zero,
  1. self.map = [[MAMapView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)]
复制代码


然后我们用默认的大头针是OK的,是你自定义的CACoordLayer里display时设置了0,0.你打断点看看。
hello amap!
回复 支持 反对

使用道具 举报

最佳答案
0 

27

主题

53

帖子

273

积分

中级会员

Rank: 3Rank: 3

积分
273
9#
 楼主| 发表于 2016-9-30 09:08:51 | 只看该作者
尧_月 发表于 2016-9-29 16:32
首先,地图创建的时候不要设置zero,

然后我们用默认的大头针是OK的,是你自定义的CACoordLayer里display ...

1、这个CACoordLayer我是直接从您给我的ios-MovingAnnotationDemo里复制来的,没做改变;
而且display这方法只在动画时才调用,目前我demo里没动画,应该没有影响吧。
2、我调试时发现CACoordLayer里
- (id)initWithLayerid)layer
{
    if ((self = [super initWithLayer:layer]))
    {
        if ([layer isKindOfClass:[CACoordLayer class]])
        {
            CACoordLayer * input = layer;
            self.mapx = input.mapx;
            self.mapy = input.mapy;
            [self setNeedsDisplay];
        }
    }
    return self;
}
这个方法从来不会被调用,是不是有问题?

3、在iOS-MovingAnnotationDemo里 CACoordLayer的初始化是在
- (id)initWithAnnotationid<MAAnnotation>)annotation reuseIdentifierNSString *)reuseIdentifier
{
    self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
    if (self)
    {
        CACoordLayer * mylayer = ((CACoordLayer *)self.layer);
        MAMapPoint mapPoint = MAMapPointForCoordinate(annotation.coordinate);
        mylayer.mapx = mapPoint.x;
        mylayer.mapy = mapPoint.y;
        
        mylayer.centerOffset = self.centerOffset;
        
        isAnimatingX = NO;
        isAnimatingY = NO;
    }
    return self;
}

这里不会触发CACoordLayer的initWithLayer方法,是不是有漏洞?
麻烦版主大人给耐心看看,谢谢!!

回复 支持 反对

使用道具 举报

最佳答案
510 

8

主题

4511

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10082
10#
发表于 2016-9-30 11:43:43 | 只看该作者    本楼为最佳答案   
  1. - (void)display
  2. {
  3.     CACoordLayer * layer = [self presentationLayer];
  4.    
  5.     if (layer == nil)
  6.     {
  7.         return;
  8.     }
  9.    
  10.     MAMapPoint mappoint = MAMapPointMake(layer.mapx, layer.mapy);
  11.    
  12.     CGPoint center = [self.mapView pointForMapPoint:mappoint];
  13.     center.x += self.centerOffset.x;
  14.     center.y += self.centerOffset.y;
  15.    
  16.     self.position = center;
  17. }
复制代码


这里修改一下。
hello amap!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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