百度地圖之標註一組地理座標
一、需求
開發移動地圖相關的應用有時會有這樣的需求:在地圖上顯示自己的定位,然後想檢視周邊使用這個應用的有哪些人。當然完成這個功能需要後臺資料的支援,你要把自己的位置資訊發給後臺,後臺在根據你的位置查詢資料庫返回你周圍的使用者的資訊,這些資訊包括經緯度座標、描述等。這裡只描述客戶端如何實現,至於後臺返回的這些資料就在本地建立家資料了,下面就用百度地圖實現這個功能。
二、實現效果展示
三、程式碼(定位功能上一篇文章已經描述,下面只實現顯示一組座標)
1、建立變數接受協議
@interface BaiduMapViewController ()<BMKMapViewDelegate,BMKLocationServiceDelegate>
{
BMKMapView * _mapView; //地圖
BMKLocationService * _locationService; //定位
NSMutableArray * _points;//地理座標的集合
NSMutableArray * _titles;//標註
}
@property (nonatomic,strong) CLLocationManager *locationManager; //iOS8以後定位授權機制的改變,需要手動授權
@end
2、建立檢視+初始化相應資料
- (void)viewDidLoad {
[super viewDidLoad];
_mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[self.view addSubview:_mapView];
[_mapView setZoomLevel:14];
//定位
_locationService = [[BMKLocationService alloc]init];
//顯示周圍
UIButton * showAround = [UIButton buttonWithType:UIButtonTypeCustom];
[showAround setTitle:@"顯示周圍" forState:UIControlStateNormal];
[showAround setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
showAround.frame = CGRectMake(200, 0, 80, 30);
[showAround addTarget:self action:@selector(showAround) forControlEvents:UIControlEventTouchUpInside];
[self.navigationController.navigationBar addSubview:showAround];
//建立地理座標和標註title
CGPoint item1 = CGPointMake(39.915101, 116.403981);
CGPoint item2 = CGPointMake(39.945210, 116.403981);
CGPoint item3 = CGPointMake(39.935301, 116.403991);
CGPoint item4 = CGPointMake(39.925421, 116.403971);
_points = [[NSMutableArray alloc] initWithObjects:NSStringFromCGPoint(item1), NSStringFromCGPoint(item2),NSStringFromCGPoint(item3),NSStringFromCGPoint(item4),nil];
_titles = [[NSMutableArray alloc]initWithObjects:@"天安門",@"神剎海",@"景山公園",@"故宮", nil];
}
3、管理地圖的生命週期:自2.0.0起,BMKMapView新增viewWillAppear、viewWillDisappear方法來控制BMKMapView的生命週期,並且在一個時刻只能有一個BMKMapView接受回撥訊息,因此在使用BMKMapView的viewController中需要在viewWillAppear、viewWillDisappear方法中呼叫BMKMapView的對應的方法,並處理delegate
#pragma mark - viewWillAppear
-(void)viewWillAppear:(BOOL)animated{
[_mapView viewWillAppear];
_mapView.delegate = self;
_locationService.delegate = self;
}
#pragma mark - viewDidAppear
-(void)viewWillDisappear:(BOOL)animated{
[_mapView viewWillDisappear];
_mapView.delegate = nil;
_locationService.delegate = nil;
}
4、當點選“顯示周邊”按鈕的時建立大頭針
-(void)showAround{
if (_points.count) {
NSMutableArray * annotations = [[NSMutableArray alloc]init];
for (int i = 0; i < _points.count; i++) {
CGPoint point = CGPointFromString(_points[i]);
CLLocationCoordinate2D pt = (CLLocationCoordinate2D){point.x,point.y};
//建立大頭針
BMKPointAnnotation * item = [[BMKPointAnnotation alloc]init];
//設定大頭針的座標
item.coordinate = pt;
//設定大頭針的標註
item.title = _titles[i];
[annotations addObject:item];
if(i == 0)
{
//將第一個點的座標移到螢幕中央
_mapView.centerCoordinate = pt;
}
}
//新增大頭針到地圖上
[_mapView addAnnotations:annotations];
}
}
#pragma mark 當呼叫[_mapView addAnnotations:annotations]時回出發地圖的代理方法,建立大頭針
-(BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation{
NSString * ID = @"annotationViewID";
BMKPinAnnotationView * view = (BMKPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:ID];
if (view == nil) {
view = [[BMKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:ID];
view.pinColor = BMKPinAnnotationColorPurple;
view.animatesDrop = YES;
}
view.centerOffset = CGPointMake(0, -(view.frame.size.height*.5));
view.annotation = annotation; //設定代理
view.canShowCallout = TRUE;
return view;
}
相關文章
- 百度地圖框選標註座標點功能地圖
- 地圖投影系列介紹(二)_ 地理座標系地圖
- JN專案-百度地圖座標偏移地圖
- 百度地圖API新增自定義標註多點標註地圖API
- 百度地圖:根據位置獲取座標地圖
- 未經投影的地理座標系如何顯示為平面地圖地圖
- 百度地圖API : 自定義標註圖示地圖API
- 百度地圖計算兩座標點之間距離計算地圖
- 騰訊地圖定位及座標解析地圖
- 騰訊地圖拾取座標地圖
- iOS地球座標、火星座標和百度座標之間轉換(Swift3.0)iOSSwift
- gcoord: 轉換WGS84、GCJ02、BD09座標,轉換百度高德地圖座標系GC地圖
- iOS根據地址在地圖上展示座標iOS地圖
- iOS中地圖經緯度座標轉換iOS地圖
- 百度地圖BMap實現在行政區域內做標註地圖
- 百度地圖拾取座標工具-toolfk程式設計師線上工具地圖程式設計師
- aecmap直接用地理座標系計算面積
- openlayers根據座標在地圖上劃區域地圖
- ArcGIS地圖投影與座標系轉換的方法地圖
- Qt/C++地址轉座標/座標轉地址/逆地址解析/支援百度高德騰訊和天地圖QTC++地圖
- GPS座標互轉:WGS-84(GPS)、GCJ-02(Google地圖)、BD-09(百度地圖)GCGo地圖
- 百度座標轉換API使用API
- ArcGIS API for Silverlight 中根據座標點在地圖上打標記API地圖
- 地圖免費標註公司位置,怎麼做業務分佈地圖地圖
- 高德座標打點(點為正常的WGS84地球座標系,常見於 GPS 裝置,Google 地圖等國際標準的座標體系)偏移,調整偏移量Go地圖
- dcat欄位擴充套件:地圖拖拽設定xy座標套件地圖
- 【地圖API】為何您的座標不準?如何糾偏?地圖API
- Excel轉百度座標系(AngularJS)ExcelAngularJS
- 百度地圖API開發的快速使用和新增大量座標點的幾種方法地圖API
- ArcGIS API for Silverlight 滑鼠移動顯示地理座標API
- 火星座標和正常座標之間的轉換
- 百度地圖之基礎地圖地圖
- 帶你瞭解資料標註之文字標註
- 【GIS工具】百度poi載入工具之玩轉座標系統!
- vue 實現高德座標轉GPS座標Vue
- ArcGIS API for JavaScript根據兩個點座標在地圖上畫線APIJavaScript地圖
- 流體力學守恆形式Euler方程(笛卡爾座標、柱座標、球座標)
- 螢幕座標、裝置座標以及邏輯座標的區別