租房上海恩美路演学无止境

百度地图定义大头针和聚合点

2016-05-12  本文已影响1878人  7dfa9c18c1d1

在文章的末尾有Demo,想看代码的朋友直接翻到最后吧。

1、集成百度地图需要的注意事项
<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>
<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>baidumap</string>
    </array>
-(void)viewWillAppear:(BOOL)animated      
{      
    [_mapView viewWillAppear];      
    _mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放      
}      
-(void)viewWillDisappear:(BOOL)animated      
{      
       [_mapView viewWillDisappear];      
      _mapView.delegate = nil; // 不用时,置nil      
}
- (void)applicationWillResignActive:(UIApplication *)application {
    [BMKMapView willBackGround];//当应用即将后台时调用,停止一切调用opengl相关的操作
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
    [BMKMapView didForeGround];//当应用恢复前台状态时调用,回复地图的渲染和opengl相关的操作
}
2、配置开发环境
3、百度地图集成过程中一些概念的介绍
4、项目中需要自定义大头针和聚合功能
5、需要经常用的几个代理方法
#pragma mark - MapDelgate
- (void)mapViewDidFinishLoading:(BMKMapView *)mapView
{
// 这个方法是当地图加载完成后会走的一个方法,一般把在mapView上添加其他控件的方法,写在这里

    // 添加系统大头针
//    [self addAnnotation];
    
    // 添加自定义大头针
//    [self addCustomAonnotation];
    
    // 添加聚合点 注意:使用聚合的时候,需要把上面两个给注释掉
    [self updateClusters];
}

/**
 *地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)都会调用此接口
 *@param mapview 地图View
 *@param status 此时地图的状态
 */
- (void)mapView:(BMKMapView *)mapView onDrawMapFrame:(BMKMapStatus *)status {
    if (_clusterZoom != 0 && _clusterZoom != (NSInteger)mapView.zoomLevel) {
        // 所以每当地图放大或者缩小的时候,我们都应该调用这个方法,重新计算大头针,这个方法是在写聚合点的时候必须不断调用的一个方法
        [self updateClusters];
    }
}

// 这个代理方法是最常用的一个,一般在mapView上添加点什么东西,最后都要走这个方法
- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id<BMKAnnotation>)annotation
{
}
#pragma mark - LoactionServiceDelegate
// 这是定位的时候使用的代理方法,一般在导航、线路规划的时候用的较多,我这个工程中就是顺手学过
// 当前用户朝向更新
- (void)didUpdateUserHeading:(BMKUserLocation *)userLocation
{
    NSLog(@"heading is %@",userLocation.heading);
    [_mapView updateLocationData:userLocation];
}
//处理位置坐标更新
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation
{
}
上一篇下一篇

猜你喜欢

热点阅读