深入学习百度地图Android SDK v4.0.0【第六关】室内地图

原创 2016年08月30日 16:50:57

百度地图居然推出了室内地图,那不是可以看看女神的家。你想多了,目前室内地图只支持大型购物商场,机场,火车站,医院等,覆盖了全国大概600个大型购物中心,继续增加中。目前用处不大,但也不错啊,去一些商场逛,妈妈再也不用担心我找不到厕所啦!

package cq.cake.chwl.ui;

import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;

import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.MapBaseIndoorMapInfo;
import com.baidu.mapapi.map.MapBaseIndoorMapInfo.SwitchFloorError;
import com.baidu.mapapi.map.MapStatus;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.model.LatLng;

import java.util.ArrayList;

import cq.cake.base.BaseToolbarMapActivity;
import cq.cake.chwl.R;
import cq.cake.util.L;
import cq.cake.util.T;

/**
 * 自v4.0版起,百度地图SDK室内图功能正式上线,辅助开发者实现全新的地理位置服务体验,室内地图与百度地图App同步更新。
 支持的公众建筑包含购物【商场】、【机场】和【火车站】等交通枢纽,【医院】等,覆盖全国约600个大型购物中心,覆盖类型和城市还在持续增加中。
 仅室内图区域与显示屏幕有交集时,最大支持22级地图缩放;室内图区域与显示屏幕无交集时,基础地图支持最大缩放到21级。
 注意:因路况、卫星图仅支持20级地图数据显示,室内地图放大到22级,打开路况、卫星图可能无相应数据显示。
 此功能位于 “基础地图(Map)”这个功能模块,开发者使用时请注意选择。
 */
public class IndoorActivity extends BaseToolbarMapActivity {

    private boolean isHaveFloor;
    private ListAdapter adapter;
    ArrayList<String> floors;
    public MapBaseIndoorMapInfo indoorMapInfo;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_indoor);
        init();
    }

    private void init() {

        LatLng centerpos = new LatLng(29.563757, 106.466343); // 北京南站
        MapStatus.Builder builder = new MapStatus.Builder();
        builder.target(centerpos).zoom(19.0f);
        mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newMapStatus(builder.build()));

        mBaiduMap.setIndoorEnable(true);// 打开室内图
        mBaiduMap.setOnBaseIndoorMapListener(new BaiduMap.OnBaseIndoorMapListener() {

            @Override
            public void onBaseIndoorMapMode(boolean b, MapBaseIndoorMapInfo mapBaseIndoorMapInfo) {
                if (b) {
                    L.i("进入室内图");
                    indoorMapInfo = mapBaseIndoorMapInfo;
                    // 进入室内图
                    // 通过获取回调参数 mapBaseIndoorMapInfo 来获取室内图信息,包含楼层信息,室内ID等
                    floors = mapBaseIndoorMapInfo.getFloors();
                    if (floors!=null&&floors.size()>0){
                        isHaveFloor = true;
                        adapter = new ArrayAdapter<String>(IndoorActivity.this,R.layout.item_floors,floors);
                    }else {
                        isHaveFloor = false;
                    }


                } else {
                    L.i("移除室内图");
                    isHaveFloor = false;
                }
            }
        });

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int itemId = item.getItemId();
        switch (itemId){
            case R.id.menu1:
                if (isHaveFloor){
                    AlertDialog.Builder builder = new AlertDialog.Builder(this);
                    builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            L.i(floors.get(which)+"楼");
                            switchFloor(floors.get(which));
                        }
                    });
                    builder.show();
                }else{
                    T.showLong(this,"暂无楼层可供切换");
                }


                break;
        }
        return super.onOptionsItemSelected(item);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_indoor,menu);
        return super.onCreateOptionsMenu(menu);
    }

    public void switchFloor(String floor){
        SwitchFloorError switchFloorError =  mBaiduMap.switchBaseIndoorMapFloor(floor, indoorMapInfo.getID()); // 切换楼层信息
        switch (switchFloorError) {
            case SWITCH_OK:
                T.showLong(IndoorActivity.this,"切换成功到【"+floor+"】");
                break;
            case FLOOR_INFO_ERROR:
                T.showLong(IndoorActivity.this,"室内ID信息错误");
                break;
            case FLOOR_OVERLFLOW:
                T.showLong(IndoorActivity.this,"切换楼层室内ID与当前聚焦室内ID不匹配");
                break;
            case FOCUSED_ID_ERROR:
                T.showLong(IndoorActivity.this,"切换楼层室内ID与当前聚焦室内ID不匹配");
                break;
            case SWITCH_ERROR:
                T.showLong(IndoorActivity.this,"切换楼层错误");
                break;
            default:
                break;
        }
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

深入学习百度地图Android SDK v4.0.0【第八关】离线地图

自v3.6.0起,官网不再支持地图离线包下载,所以SDK去掉“手动导入离线包接口”,SDK在线下载离线包接口仍维持不变。官网的介绍非常简单,就是说如果有离线地图优先加载离线地图,而且限制不支持外部下载...
  • xiaoshubing
  • xiaoshubing
  • 2016年09月10日 09:37
  • 671

百度地图的使用--SDK_V4_0_0

我们直接进入主题吧   百度地图使用需要准备些什么?   首先要成为百度开发者,登陆百度账号,并打开http://developer.baidu.com/user/reg填写注册信息   成功后登陆百...
  • jingmo4129
  • jingmo4129
  • 2016年10月12日 15:34
  • 741

深入学习百度地图Android SDK v4.0.0【第二关】公交地图

公交地图必不可少,而且相对基础地图来说要麻烦一些,所以单独列出来写一篇!此篇是在已经搭建配置好基础地图的基础上来说的,不明白请看: 深入学习百度地图Android SDK v4.0.0【第一关】基础...
  • xiaoshubing
  • xiaoshubing
  • 2016年08月13日 17:55
  • 941

深入学习百度地图Android SDK v4.0.0【第三关】路线规划

在第二关我们说了如何查询公交路线图,但前提你得知道公交是几路公交!而一般人知道某个地点,就想去,而不是通过几路公交来查询!所以这关我们来说说如果查询两个地点之间的路线规划【1.骑行路线2.驾车路线3....
  • xiaoshubing
  • xiaoshubing
  • 2016年08月15日 16:58
  • 2392

深入学习百度地图Android SDK v4.0.0【第五关】瓦片图层

官方说是可以使用自己的图片,但是图片的大小和规格都没有明说,主要用于添加自己的图层信息,有在线和离线两种!估计使用率很低,也就不多说了!package cq.cake.chwl.ui; import...
  • xiaoshubing
  • xiaoshubing
  • 2016年08月30日 16:42
  • 2202

矢量室内地图

因为公司项目的需要,需要开发一套室内地图,并实现路线的规划功能。因为之前没做过这方面的开发,相关的资料也比较少,所以只能一个人去摸索。刚开始我是使用一般的位图去当作的地图,但是这个也让我在后面吃了不少...
  • u013043346
  • u013043346
  • 2015年12月07日 16:03
  • 33228

基于OpenLayer的室内地图前端设计开发

使用Open Layers 3 技术开发设计 室内地图定位前端显示界面,主要功能包括实时位置定位,个性化围栏标绘,历史轨迹回放。 实时定位(点标记弹窗): 围栏标绘: ...
  • u011001084
  • u011001084
  • 2017年06月05日 14:25
  • 16075

深入学习百度地图Android SDK v4.0.0【第四关】OpenGL绘制

OpenGL出现的频率越来越高了,尽管目前我没有用到,但也记录下来,方便以后扩展!这个没什么好说的,直接上代码绘制! package cq.cake.chwl.ui; import android....
  • xiaoshubing
  • xiaoshubing
  • 2016年08月27日 17:28
  • 1162

深入学习百度地图Android SDK v4.0.0【第七关】周边雷达

本来想学习一下Andriod Wear的开发,但是买不起Wear啊!直接跳过,开始学习周边雷达地图部分!这个功能非常有用,能知道你周围和你使用相同软件的人,牛郎织女一人安装一个,再也不用去鹊桥相会了,...
  • xiaoshubing
  • xiaoshubing
  • 2016年09月02日 11:29
  • 1400

深入学习百度地图Android SDK v4.0.0【第九关】检索功能

检索其实就是查询,比如你要找一个地方的美食,就可以通过输入城市和美食的关键字来查询!这一功能官方介绍的很多,我们主要看看检索城市的美食,并通过UID去检索美食详情信息!package cq.cake....
  • xiaoshubing
  • xiaoshubing
  • 2016年09月10日 11:27
  • 788
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深入学习百度地图Android SDK v4.0.0【第六关】室内地图
举报原因:
原因补充:

(最多只允许输入30个字)