蜂鸟视图室内地图 Android SDK

地图控件 Fengmap Android SDK 提供多个控件。控件与地图之间存在交互。本模块将对控件交互部分提供说明介绍。

注:除指北针控件外,其余控件的创建都在onMapInitSuccess事件之后,因为控件需在地图加载完成后,才能与地图有交互。

楼层控件

Fengmap Android SDK 提供两种类型的楼层切换控件,FMSwitchFloorComponent和FMFloorControllerComponent。参考如下:

• 创建楼层控件1(包括楼层按钮和单/多楼层切换按钮)

// 创建楼层切换控件
mFloorComponent = new FMFloorControllerComponent(this);
mFloorComponent.setMaxItemCount(4);//设置楼层最大显示数量
//楼层切换事件监听
mFloorComponent.setOnFMFloorControllerComponentListener
   (new FMFloorControllerComponent.OnFMFloorControllerComponentListener() {
    @Override
    public void onSwitchFloorMode(View view, FMFloorControllerComponent.FMFloorMode currentMode) {

    }

    @Override
    public boolean onItemSelected(int groupId, String floorName) {
        return false;
    }
});

• 图层控件事件与方法

//设置为单层模式
mFloorComponent.setFloorMode(FMFloorControllerComponent.FMFloorMode.SINGLE);
int groupId = 1; //设置默认显示楼层id
mFloorComponent.setFloorDataFromFMMapInfo(mFMMap.getFMMapInfo(), groupId);
mMapView.addComponent(mFloorComponent, 10, 400);//添加楼层控件并设置位置

• 楼层控件2(只有楼层按钮,不带楼层切换按钮)


//创建楼层控件
mSwitchFloorComponent = new FMSwitchFloorComponent(this);
//最多显示5个
mSwitchFloorComponent.setMaxItemCount(5);
mSwitchFloorComponent.setOnFMSwitchFloorComponentListener(new
FMSwitchFloorComponent.OnFMSwitchFloorComponentListener() {
    @Override
    public boolean onItemSelected(int groupId, String floorName) {
        return true;
    }
});
mSwitchFloorComponent.setFloorDataFromFMMapInfo(mFMMap.getFMMapInfo(), mFMMap.getFocusGroupId());

mSwitchFloorComponent.measure(0, 0);
int width = mSwitchFloorComponent.getMeasuredWidth();
mMapView.addComponent(mSwitchFloorComponent, FMDevice.getDeviceWidth() - 10 - width,
 FMDevice.getDeviceHeight() - 780);
地图缩放控件

提供放大、缩小控件,放大、缩小控件按钮点击时会根据比例尺级别放大和缩小地图,并回调方法。参考代码:

//创建放大/缩小控件
mZoomComponent = new FMZoomComponent(this);
mZoomComponent.measure(0, 0);
int width = mZoomComponent.getMeasuredWidth();
int height = mZoomComponent.getMeasuredHeight();
//缩放控件位置
int offsetX = FMDevice.getDeviceWidth() - width - 10;
int offsetY = FMDevice.getDeviceHeight() - 400 - height;
mMapView.addComponent(mZoomComponent, offsetX, offsetY);
//设置放大/缩小控件
mZoomComponent.setOnFMZoomComponentListener(new FMZoomComponent.OnFMZoomComponentListener() {
    @Override
    public void onZoomIn(View view) {
    }

    @Override
    public void onZoomOut(View view) {
    }
});
指北针

Fengmap Android SDK 提供指北针控件,用来显示地图的朝向。同时,地图监听了指北针点击的事件。设置如下所示:

mFMMap.setOnFMCompassListener(new OnFMCompassListener() {
    @Override
    public void onCompassClick() {

    }
});
多楼层控制控件

Fengmap Android SDK 提供单/多层楼层,通过该控件可操作地图的单层/多层显示,并提供了单/多层楼层点击回调事件,参考代码如下:

//创建单/多层楼层切换控件
mMultiFloorButton = new FMMultiFloorControllerButton(this);
mMultiFloorButton.initState(false);
mMultiFloorButton.measure(0, 0);
int width = mMultiFloorButton.getMeasuredWidth();
//设置单/多层楼层切换控件位置
mMapView.addComponent(mMultiFloorButton, FMDevice.getDeviceWidth() - 10 - width, 60);
//单、多楼层点击切换监听
mMultiFloorButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {

    }
});
二三维切换控件

Fengmap Android SDK 提供2D/3D切换控件,通过控件可操作地图的2D/3D显示,并提供了2D/3D点击回调事件,参考代码如下:

//2D/3D控件初始化
m3DTextButton = new FM3DControllerButton(this);
//设置初始状态为3D
m3DTextButton.initState(true);
m3DTextButton.measure(0, 0);
int width = m3DTextButton.getMeasuredWidth();
//设置3D控件位置
mMapView.addComponent(m3DTextButton, FMDevice.getDeviceWidth() - 10 - width, 50);
//2D/3D点击监听
m3DTextButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    }
});