1. 程式人生 > >iOS百度地圖點選BMKPointAnnotation後把該座標點放到螢幕任意位置

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.mapViewconvertCoordinate:point.coordinatetoPointToView: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軸類似,有需要的自己轉換下吧。