关于百度地图的所搜功能

 

    /** 百度地图 */

    var mapView = BMKMapView()

    

    var locSevice:BMKLocationService!

    

    /** 用户所在位置 */ //

    var latitude:Double!

    var longitude:Double!

    

    ///geo搜索服务

    var geoco:BMKGeoCodeSearch?

    

    /** 搜索对象 */

    var searcher:BMKPoiSearch?

    /** 搜索对象信息 */

    var searcheOption:BMKNearbySearchOption?

    /// geo检索信息类

    var option:BMKGeoCodeSearchOption?

    let btnBasicTag = 49

    var selectBtn:UIButton?

    var barBtnView:UIView!

 

// 1 设置 百度地图的相关信息

func setupMapView(){

        self.mapView = BMKMapView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height - 44))

        

        self.mapView.delegate = self

        

        /** 地图允许缩放 */

        self.mapView.zoomEnabled = true

        /** 地图比例 */

        self.mapView.showMapScaleBar = true

        /** 地图等级 */

        self.mapView.zoomLevel=18.0

        

        self.view.addSubview(self.mapView)

        

        /** 更新到用户所在 */

        self.mapView.showsUserLocation = true

        

        /** 尾随模式 */

        self.mapView.userTrackingMode = BMKUserTrackingModeFollow

        

        //初始化BMKLocationService

        self.locSevice = BMKLocationService()

        self.locSevice.delegate = self

        //启动LocationService

        self.locSevice.startUserLocationService()

        //发起检索

        self.geoco = BMKGeoCodeSearch()

        self.geoco!.delegate = self

        

        self.option = BMKGeoCodeSearchOption()

    }

 

    /** 2 设置检索条件 */

    func setupBMKGeoCodeSearch(){

        //初始化检索对象

        self.searcher = BMKPoiSearch()

        self.searcher?.delegate = self

        //发起检索

        self.searcheOption = BMKNearbySearchOption()

        self.searcheOption?.pageCapacity = 10

        self.searcheOption?.location = CLLocationCoordinate2DMake(self.latitude, self.longitude)

        self.searcheOption!.keyword = "公交";

        self.searcheOption?.radius = 2000

        let flag = self.searcher?.poiSearchNearBy(self.searcheOption)

        if(flag == true){

            print("检索成功")

        }else{

            print("检索不成成功")

        }

    }

 

    /** 3 设置检索 回调   添加大头针*/

    func onGetPoiResult(searcher: BMKPoiSearch!, result poiResult: BMKPoiResult!, errorCode: BMKSearchErrorCode) {

        

        let poiInfoList = poiResult.poiInfoList

        if errorCode == BMK_SEARCH_NO_ERROR {

            /** 遍历搜索结果 */

            for obj in poiInfoList {

                /** 获得搜索出来的坐标 */

                let poiInfo = obj as! BMKPoiInfo

                let tagPiont = poiInfo.pt

                /** 在搜索结果上,打上大头针 */

                let pointAnnotation = BMKPointAnnotation()

                let tagLocal = CLLocationCoordinate2D(latitude: tagPiont.latitude, longitude: tagPiont.longitude)

                pointAnnotation.coordinate = tagLocal

                self.mapView.addAnnotation(pointAnnotation)

            }

            

        }

        

    }

 

/**  4,处理详细结果 */

    func onGetPoiDetailResult(searcher: BMKPoiSearch!, result poiDetailResult: BMKPoiDetailResult!, errorCode: BMKSearchErrorCode) {

        if errorCode != BMK_SEARCH_NO_ERROR {

            print("没有找到结果")

        }else{

            print("找到结果")

        }

    }

 

    /** 5 返回自定义大头针 */

    func mapView(mapView: BMKMapView!, viewForAnnotation annotation: BMKAnnotation!) -> BMKAnnotationView! {

        var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier("annotation") as?BMKPinAnnotationView

        

        if annotationView == nil {

/** 这里是有个问题的,,,需要用BMKPinAnnotationView 来创界而不是 BMKAnnotationView!*/

            annotationView = BMKPinAnnotationView(annotation: annotation, reuseIdentifier: "annotation")

            

            annotationView!.image = UIImage(named: "1-0ershoufang")

            

            annotationView!.annotation = annotation

        }

        

        

        return annotationView

    }

 

// 日积    终有一日,你能得心应手    LYH

posted @ 2016-05-24 09:41  世界仔  阅读(862)  评论(0编辑  收藏  举报