前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android调用百度地图

android调用百度地图

作者头像
码客说
发布2019-10-22 14:14:30
4230
发布2019-10-22 14:14:30
举报
文章被收录于专栏:码客

初始化地图

代码语言:javascript
复制
//设置地图
mMapView = (MapView) findViewById(R.id.bmapsView); //获取地图控件引用
mBaiduMap = mMapView.getMap();
//普通地图
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
mBaiduMap.setMyLocationEnabled(true);//// 开启定位图层
mMapView.showZoomControls(false);
mMapView.showScaleControl(false);
//设置地图当前坐标位置
mBaiduMap.clear();//清除地图之前的覆盖物
LatLng cenpt = new LatLng(34.752242, 113.666634);
MapStatus mMapStatus = new MapStatus.Builder()
        .target(cenpt)
        .zoom(18)
        .build();
MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);
mBaiduMap.setMapStatus(mMapStatusUpdate);

监听地图状态变化

代码语言:javascript
复制
//初始化状态监听
private void initStatus(){
    BaiduMap.OnMapStatusChangeListener statusChangeListener = new BaiduMap.OnMapStatusChangeListener() {
        /**
         * 手势操作地图,设置地图状态等操作导致地图状态开始改变。
         * @param status 地图状态改变开始时的地图状态
         */
        public void onMapStatusChangeStart(MapStatus status){
            Log.i("info", "onMapStatusChangeStart ");
        }
        /**
         * 地图状态变化中
         * @param status 当前地图状态
         */
        public void onMapStatusChange(MapStatus status){
            Log.i("info", "onMapStatusChange ");
        }
        /**
         * 地图状态改变结束
         * @param status 地图状态改变结束后的地图状态
         */
        public void onMapStatusChangeFinish(MapStatus status){
            LatLng centerLatLng = mBaiduMap.getMapStatus().target;
            //地址反向解析
            mSearch.reverseGeoCode(new ReverseGeoCodeOption().location(centerLatLng));

        }
    };

    mBaiduMap.setOnMapStatusChangeListener(statusChangeListener);

}

定位

初始化定位
代码语言:javascript
复制
//初始化定位
private void initLocation() {
    mLocationClient = new LocationClient(this.getApplicationContext());
    LocationClientOption option = new LocationClientOption();
    option.setLocationMode(tempMode);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
    option.setCoorType(tempcoor);//可选,默认gcj02,设置返回的定位结果坐标系,
    option.setScanSpan(scanSpan);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
    option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
    option.setOpenGps(true);//可选,默认false,设置是否使用gps
    option.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
    option.setIgnoreKillProcess(true);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
    mLocationClient.setLocOption(option);
    mLocationClient.registerLocationListener(new BDLocationListener() {
        @Override
        public void onReceiveLocation(BDLocation bdLocation) {
            Log.i("loc", "地址获取成功 ");
            userLoc.setCity("郑州市");
            LatLng userlatLng = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude());
            userLoc.setLatLng(userlatLng);
            userLoc.setAddress(bdLocation.getAddrStr());
            userLoc.setName("我的位置");
            MapStatus mMapStatus = new MapStatus.Builder()
                    .target(userlatLng)
                    .zoom(18)
                    .build();
            MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory.newMapStatus(mMapStatus);
            mBaiduMap.setMapStatus(mMapStatusUpdate);
            mSearch.reverseGeoCode(new ReverseGeoCodeOption().location(userlatLng));
        }
    });
}
启动定位
代码语言:javascript
复制
mLocationClient.start();//定位SDK start之后会默认发起一次定位请求,开发者无须判断isstart并主动调用request
mLocationClient.requestLocation();

获取坐标点的附近的poi

初始化
代码语言:javascript
复制
private void initSearch(){
    mSearch = GeoCoder.newInstance();
    OnGetGeoCoderResultListener listener = new OnGetGeoCoderResultListener() {
        public void onGetGeoCodeResult(GeoCodeResult result) {
            if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
                //没有检索到结果
            }
            //获取地理编码结果
        }

        @Override
        public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {
            if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {
                //没有找到检索结果
            }else{
                List<PoiInfo> poiList = result.getPoiList();
                listData.removeAll(listData);
                for (int i = 0; i <poiList.size() ; i++) {
                    PoiInfo poi = poiList.get(i);
                    ZJLoction loc  = new ZJLoction();
                    loc.setAddress(poi.address);
                    loc.setName(poi.name);
                    loc.setLatLng(poi.location);
                    loc.setCity(poi.city);
                    listData.add(loc);

                }
                mAdapter.notifyDataSetChanged();

            }
            //获取反向地理编码结果
        }
    };

    mSearch.setOnGetGeoCodeResultListener(listener);

}
调用
代码语言:javascript
复制
mSearch.reverseGeoCode(new ReverseGeoCodeOption().location(userlatLng));

关键字搜索

初始化
代码语言:javascript
复制
private void initPoiSearch(){
    mPoiSearch = PoiSearch.newInstance();
    OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener(){
        public void onGetPoiResult(PoiResult result){
            //获取POI检索结果

            List<PoiInfo> poiList = result.getAllPoi();
            searchListData.removeAll(searchListData);
            if(poiList != null){
                for (int i = 0; i <poiList.size() ; i++) {
                    PoiInfo poi = poiList.get(i);
                    ZJLoction loc  = new ZJLoction();
                    loc.setAddress(poi.address);
                    loc.setName(poi.name);
                    loc.setLatLng(poi.location);
                    loc.setCity(poi.city);
                    searchListData.add(loc);

                }
            }

            searchAdapter.notifyDataSetChanged();
        }
        public void onGetPoiDetailResult(PoiDetailResult result){
            //获取Place详情页检索结果
        }
    };
    mPoiSearch.setOnGetPoiSearchResultListener(poiListener);
}
调用
代码语言:javascript
复制
mPoiSearch.searchInCity((new PoiCitySearchOption())
        .city("郑州")
        .keyword("学校")
        .pageNum(20));

关键字建议

初始化
代码语言:javascript
复制
private void initSuggestSearch(){
    mSuggestionSearch = SuggestionSearch.newInstance();
    OnGetSuggestionResultListener listener = new OnGetSuggestionResultListener() {
        public void onGetSuggestionResult(SuggestionResult res) {
            if (res == null || res.getAllSuggestions() == null) {
                return;
                //未找到相关结果
            }else{
                List<SuggestionResult.SuggestionInfo> suggestList = res.getAllSuggestions();

            }
            //获取在线建议检索结果
        }
    };
    mSuggestionSearch.setOnGetSuggestionResultListener(listener);
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 初始化地图
  • 监听地图状态变化
  • 定位
    • 初始化定位
      • 启动定位
      • 获取坐标点的附近的poi
        • 初始化
          • 调用
          • 关键字搜索
            • 初始化
              • 调用
              • 关键字建议
                • 初始化
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档