如果公司后台没有成熟的位置筛选算法,集成百度云检索的确可以帮助他们省去很多事,他们需要做的只是去关联自己数据库与百度控制台数据库实时同步,移动端集成即可实现.
移动端具体实现:
按照文档集成sdk,注意不同framework保持版本号一直 一般用最近的就好.
let cloudSearch = BMKCloudNearbySearchInfo()
cloudSearch.ak = “V682411usQYKuser5AFD4GYqrvjfw" //注意安卓和iOS这里是填服务器AK
cloudSearch.geoTableId = 123677 //控制台建表id
// let loca = "116.407183518387,40.0436045487097"
cloudSearch.location = myLocation //传入位置
cloudSearch.radius = sliderValue //范围
cloudSearch.keyword = selectedType //关键字
print("_____这是筛选的类型____\(selectedType)_______")
let filterr = “startDate:\(startTime),\(endTime)" //过滤条件(时间段间),这里我是以时间段为过滤条件
print("______我的当前位置\(myLocation)______________")
print("______我的当前时间_______\(filterr)__________")
cloudSearch.filter = filterr
//筛选标签
cloudSearch.tags = tagS
//搜索信息
let flag = searchs.nearbySearchWithSearchInfo(cloudSearch)
if flag == true {
print("__________________\("周边云检索发送成功")+++++++++++++++++++++")
}else{
print("__________________\("周边云检索发送失败")+++++++++++++++++++++")
}
代理方法
extension FindActivityViewController:BMKCloudSearchDelegate{
dynamic func onGetCloudPoiResult(poiResultList: [AnyObject]!, searchType type: Int32, errorCode error: Int32) {
print("_______这是检索的错误类型_________\(error)===============")
// BMKErrorOk = 0, ///< 正确,无错误
// BMKErrorConnect = 2, ///< 网络连接错误
// BMKErrorData = 3, ///< 数据错误
// BMKErrorRouteAddr = 4, ///<起点或终点选择(有歧义)
// BMKErrorResultNotFound = 100, ///< 搜索结果未找到
// BMKErrorLocationFailed = 200, ///< 定位失败
// BMKErrorPermissionCheckFailure = 300, ///< 百度地图API授权Key验证失败
// BMKErrorParse = 310 ///< 数据解析失败
// BMK_CLOUD_PERMISSION_UNFINISHED = -4,///<还未完成鉴权,请在鉴权通过后重试
// BMK_CLOUD_NETWOKR_ERROR = -3,///<网络连接错误
// BMK_CLOUD_NETWOKR_TIMEOUT = -2,///<网络连接超时
// BMK_CLOUD_RESULT_NOT_FOUND = -1,///<没有找到检索结果
// BMK_CLOUD_NO_ERROR = 0,///<检索结果正常返回
// BMK_CLOUD_SERVER_ERROR = 1,///<云检索服务器内部错误
// BMK_CLOUD_PARAM_ERROR = 2,///<输入参数有误(geoTableId或者其它参数有误)
let hud = MBProgressHUD.showHUDAddedTo(view, animated: true)
hud.label.text = "筛选中"
if error == 0 {
// let aaa = poiResultList as NSArray!
for index in 0...poiResultList.count-1 {
let result = poiResultList[index] as! BMKCloudPOIList
for i in 0...result.POIs.count-1 {
let poi = result.POIs[i] as! BMKCloudPOIInfo
// print("________________\(poi.latitude)===============")
// print("________________\(poi.longitude)===============")
// print("________________\(poi.address)===============")
// print("________________\(poi.distance)===============")
// print("________________\(poi.tags)===============")
// print("________________\(poi.geotableId)===============")
// print("________________\(poi.creattime)===============")
// print("________________\(poi.customDict)===============")
let dic = poi.customDict
let model = ActivityModel()
print("____这是检索的信息_______\(dic)_________")
let getPicName = "\(dic["poster"]!)"
//判断是否包含前缀
if getPicName.componentsSeparatedByString(BASEOSSOFFICIAL).count > 1{
model.picName = "\(dic["poster"]!)"
}else{
model.picName = BASEOSSOFFICIAL + "\(dic["poster"]!)"
}
model.startTime = "\(dic["startDate"]!)"
model.endTime = "\(dic["endDate"]!)"
model.location = "\(dic["locations"]!)"
model.progress = "\(dic["forumStatusMsg"]!)"
model.num = "\(dic["currentCount"]!)"
if dic["target_id"] != nil{
model.id = "\(dic["target_id"]!)"
}
model.name = "\(dic["name"]!)"
self.dataArray.addObject(model)
}
}
self.collectionView.reloadData()
hud.hideAnimated(true)
}else{
// if error == 100 {
Alert.showText("该筛选条件下没有活动")
// }
hud.hideAnimated(true)
}
}
}