美文网首页
[iOS] 实现中心大头针不随地图移动的思路

[iOS] 实现中心大头针不随地图移动的思路

作者: BudSwift | 来源:发表于2018-11-08 08:28 被阅读144次

    在地图服务的应用场景中,有一个常见的需求是在地图中心放置一个大头针,让用户拖动地图,从地图上选择一个地点,要求:这个大头针在地图的拖动过程中不移动位置。

    常规的情况下,大头针视图作为地图的一部分,是会随着地图移动而移动,那么解决的思路可以反向推导为两种方式:

    • 中心大头针与地图视图分离
    • 在地图移动的过程中不断修改大头针视图的坐标,使其一直处于地图中心

    思路确定后,实现即相对容易了:

    • 第一种:将一个imageView添加在地图或者地图的父视图上,在地图拖动结束后获取当前地图中心点的位置信息;
      第二种:为中心大头针设置一个单独的annotation,在地图拖动的回调中不断修改这个标注annotation的坐标coordinate即可,从接触的苹果、高德和百度的地图SDK看来,目前只有百度SDK有针对地图拖动的即时性回调方法:
    - (void)mapView:(BMKMapView *)mapView onDrawMapFrame:(BMKMapStatus *)status {
          self.annotatioin.coordinate = mapView.centerCoordinate;
    }
    

    对于苹果地图、高德地图则可以依赖地图区域变化的回调来实现,地图变动后将坐标进行设置,无法做到像百度那样的连续。

    - (void)mapView:(MAMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
          self.annotatioin.coordinate = mapView.centerCoordinate;
    }
    

    注意有一些方案提出监听地图status变化(百度)的回调,这样会导致过度的监听,没有必要。

    • 这个情况就别问demo啦。

    加我微信沟通。


    相关文章

      网友评论

          本文标题:[iOS] 实现中心大头针不随地图移动的思路

          本文链接:https://www.haomeiwen.com/subject/tpjixqtx.html