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

百度地图居然推出了室内地图,那不是可以看看女神的家。你想多了,目前室内地图只支持大型购物商场,机场,火车站,医院等,覆盖了全国大概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 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(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;

}

}

}

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值