iOS百度地图点击BMKPointAnnotation后把该坐标点放到屏幕任意位置

由于百度地图设置屏幕中心点只有一个方法:

/// 当前地图的中心点,改变该值时,地图的比例尺级别不会发生变化

@property (nonatomic) CLLocationCoordinate2D centerCoordinate;


但是我们有时可能有需求放到距离任意一点,比如点击坐标弹框,需要把该坐标点放到该弹框顶部。有这样的需求解决的办法就是需要坐标转换处理。

/**

 *当选中一个annotation views时,调用此接口

 *@param mapView 地图View

 *@param view 选中的annotation views

 */

-(void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view{

}

下面讲解一下Y轴的处理:


很简单,只有设置中心点坐标,而我们想把点P放到目标点上,只要知道相对于中心点对称的转换点M坐标。即可把目标点放到该区域。点本身坐标Y轴py,那么目标点Y轴坐标已知dy,中心点Y轴坐标已知h/2,求转换点M坐标:

My = py+h/2-dy

下面是栗子:

 CGPoint annoPoint = [self.mapView convertCoordinate:point.coordinate toPointToView:self.view];

CLLocationCoordinate2D coor=[self.mapViewconvertPoint:CGPointMake(annoPoint.x, annoPoint.y+screen_height/2-AdapterH(180)) toCoordinateFromView:self.view];

//求得转换点坐标AdapterH(180)为目标点到屏幕顶部的距离

[self.mapView setCenterCoordinate:coor];

先把点击的大头针转经纬度换成坐标,经过转换,把坐标再转换成经纬度,通过setCenterCoordinate函数设置中点。

这个只是在中心点Y轴垂直的坐标,X轴类似,有需要的自己转换下吧。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值