由于百度地图设置屏幕中心点只有一个方法:
/// 当前地图的中心点,改变该值时,地图的比例尺级别不会发生变化
@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轴类似,有需要的自己转换下吧。