iOS 百度地图 行政区域划分

最近 由于工作需要在百度地图的基础上要把后台反的某个 省 市 区 在地图上画出来 这个在百度的SDK上是添加覆盖物 在我这里只是简单的 用了一下 没有自定义之类的 都是从官方的demo 上面复制下来的可以放心用 

老套路  头文件

#import

#import

#import 

#import "BMKGeometry.h"  // 注意 这个一定要  不然下面的方法会报错 

首先要说一点 代理方法 千万不能忘记写 

//地图的代理

 mapView.delegate=self;

//检索的代理

districtSearch.delegate=self

//下面是代码

 BMKMapView* mapView = [[BMKMapView alloc]initWithFrame:CGRectMake(0, 100, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 100)];

    self.mapView= mapView;

    mapView.delegate=self;

    self.mapView.zoomLevel = 10 ;

    [self.viewaddSubview:mapView];

    //初始化BMKDistrictSearch实例

    BMKDistrictSearch *districtSearch = [[BMKDistrictSearch alloc] init];

    //设置行政区域检索的代理

    districtSearch.delegate=self;

    //初始化请求参数类BMKDistrictSearchOption的实例

    BMKDistrictSearchOption *districtOption = [[BMKDistrictSearchOption alloc] init];

    //城市名,必选

    districtOption.city=@"北京市";

    //区县名字,可选

    districtOption.district=@"密云县";

    /**

     行政区域检索:异步方法,返回结果在BMKDistrictSearchDelegate的

     onGetDistrictResult里


     districtOption 公交线路检索信息类

     return 成功返回YES,否则返回NO

     */

    BOOLflag = [districtSearchdistrictSearch:districtOption];

    if(flag) {

        NSLog(@"行政区域检索发送成功");

    }else{

        NSLog(@"行政区域检索发送失败");

    }

//代理方法

#pragma mark - BMKDistrictSearchDelegate

/**

 行政区域检索结果回调


 @paramsearcher 检索对象

 @paramresult 行政区域检索结果

 @paramerror 错误码,@seeBMKCloudErrorCode

 */

- (void)onGetDistrictResult:(BMKDistrictSearch*)searcher result:(BMKDistrictResult*)result errorCode:(BMKSearchErrorCode)error {

    [_mapView removeOverlays:_mapView.overlays];

    //BMKSearchErrorCode错误码,BMK_SEARCH_NO_ERROR:检索结果正常返回

    if (error == BMK_SEARCH_NO_ERROR) {

        for(NSString*pathinresult.paths) {

            BMKPolygon *polygon = [self transferPathStringToPolygon:path];

            /**

             向地图View添加Overlay,需要实现BMKMapViewDelegate的-mapView:viewForOverlay:方法

             来生成标注对应的View


             @paramoverlay 要添加的overlay

             */

            [_mapViewaddOverlay:polygon];

        }

        _mapView.centerCoordinate = result.center;

        NSString*message = [NSStringstringWithFormat:@"行政区域编码:%ld\n行政区域名称:%@\n行政区域中心点:%f,%f", result.code, result.name, result.center.latitude,result.center.longitude];

        NSLog(@"%@",message);

    }

}

- (BMKPolygon*)transferPathStringToPolygon:(NSString*)path {

    NSUInteger pathCount = [path componentsSeparatedByString:@";"].count;

    if(pathCount >0) {

        BMKMapPointpoints[pathCount];

        NSArray *pointsArray = [path componentsSeparatedByString:@";"];

        for(NSUIntegeri =0; i < pathCount; i ++) {

            if([pointsArray[i]rangeOfString:@","].location!=NSNotFound) {

                NSArray*coordinates = [pointsArray[i]componentsSeparatedByString:@","];

                points[i] =BMKMapPointMake([coordinates.firstObjectdoubleValue], [coordinates .lastObjectdoubleValue]);

            }

        }

        /**

         根据多个点生成多边形

         points 直角坐标点数组,这些点将被拷贝到生成的多边形对象中

         count 点的个数

         新生成的多边形对象

         */

        BMKPolygon *polygon = [BMKPolygon polygonWithPoints:points count:pathCount];


        returnpolygon;

    }

    return nil;

}

#pragma mark - BMKMapViewDelegate

/**

 根据overlay生成对应的BMKOverlayView


 @parammapView 地图View

 @paramoverlay 指定的overlay

 @return生成的覆盖物View

 */

- (BMKOverlayView*)mapView:(BMKMapView*)mapView viewForOverlay:(id)overlay {

    if([overlayisKindOfClass:[BMKPolygonclass]]) {

        //初始化一个overlay并返回相应的BMKPolygonView的实例

        BMKPolygonView *polygonView = [[BMKPolygonView alloc] initWithOverlay:overlay];

        //设置polygonView的画笔(边框)颜色

        polygonView.strokeColor= [UIColorcolorWithRed:1green:0blue:0alpha:0.6];

        //设置polygonView的填充色

        polygonView.fillColor= [UIColorcolorWithRed:1green:1blue:0alpha:0.4];

        //设置polygonView的线宽度

        polygonView.lineWidth=1;

        //是否为虚线样式,默认NO

        polygonView.lineDash=YES;

        returnpolygonView;

    }

    return nil;

}

你可能感兴趣的:(iOS 百度地图 行政区域划分)