关于百度地图的所搜功能
/** 百度地图 */
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