• 使用CityPicker插件实现类似于美团城市选择界面
  • 发布于 2个月前
  • 223 热度
    0 评论
在最近的需求开发当中,我们产品经理说需要增加一个类似于美团或者大众点评的城市选择界面。我当时就在想有没有办法快速实现,在不搞太多自己公司App的特色元素的时候,是有这样的库的,这篇文章的主角CityPicker库。分享这个库给大家,希望能提高大家的开发效率。

CityPicker
CityPicker库文档,感兴趣的小伙伴可以去看看详情文档。这个库需要我们自己集成地图SDK,你可以设置地图上面的当前定位城市。

简单的代码示例
1.我是通过高德地图获取当前定位城市,设置定位城市到控件里面,提高给大家参考:
// 城市的Code
private var mAdCode:String = ""
// 城市名称
private var mCity:String = ""
// 堆代码 duidaima.com
private fun setCity() {
        val mLocationClient = AMapLocationClient(this)
        val mLocationOption = AMapLocationClientOption()
        //高精度模式
        mLocationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy
        //定位请求超时时间
        mLocationOption.httpTimeOut = 50000
        // 关闭缓存机制
        mLocationOption.isLocationCacheEnable = false
        // 设置是否只定位一次
        mLocationOption.isOnceLocation = true
        //设置参数
        mLocationClient.setLocationOption(mLocationOption)
        // 启动定位
        mLocationClient.startLocation()
        //定位监听
        mLocationClient.setLocationListener { aMapLocation ->
            //定位成功之后取消定位
            mLocationClient.stopLocation()
            if (aMapLocation != null && aMapLocation.errorCode == 0) {
                binding.cityText.text = aMapLocation.city
                mAdCode = aMapLocation.cityCode
                mCity = aMapLocation.city
                mProvince = aMapLocation.province
                // 设置高德地图城市数据到控件里面
                CityPicker.setGpsCityByAMap(mCity,mAdCode)
            } else {
                ToastUtils.show("定位失败,请重新定位")
            }
        }
2.调用CityPicker控件,注意我的热门城市是设置了广州、深圳、东莞:
// 设置定位城市
CityPicker.setGpsCityByAMap(mCity,mAdCode)
// 打开城市选择界面
CityPicker.with(this)
    .setMaxHistory(0)
    .setHotCitiesId("224","107","86")
    .setOnCityPickerCallBack {
       // 选择城市的回调             
    }
    .open()
大概的使用代码就这些,如果要深入自定义业务相关的元素,我个人建议还是在这个基础上面修改就好了。
用户评论