百度地图室内地图及方向传感器实现

百度地图api之室内地图----react 在react项目中使用 1.去百度地图登录 http://lbsyun.baidu.com/ 2.获取密钥 登录后在右上角的控制台里面申请 3.拿到密钥后,将百度API的script引入到public下的index.html文件 <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你的密钥"></script> //不要忘了这个,把地图挂到window下 <script&gt 阅读详情

1、添加室内图开关的按钮

    在布局文件中添加如下代码:

 <Button
        android:id="@+id/isIndoor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:text="室内图开关"
        tools:layout_editor_absoluteX="301dp"
        tools:layout_editor_absoluteY="26dp"
        />

   默认开启室内图

        mBaiduMap.setIndoorEnable(true);

  设置按钮的点击事件

 isIndoorBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!isIndoor) {
                    EnableIndoorMap();
                } else {
                    DisableIndoorMap();
                }
                isIndoor = !isIndoor;
            }
        });

EnableIndoorMap()方法

   private void EnableIndoorMap() {
        mbaiduMap.setIndoorEnable(true);
        isIndoorBtn.setText("关闭室内图");
        Toast.makeText(MainActivity.this, "室内图已打开", Toast.LENGTH_SHORT).show();
    }

DisEnableIndoorMap() 方法

  private void DisableIndoorMap() {
        if (null != mIndoorRoutelineOverlay) {
            mIndoorRoutelineOverlay.removeFromMap();
            mIndoorRoutelineOverlay = null;
        }
        mbaiduMap.clear();
        mbaiduMap.setIndoorEnable(false);
        isIndoorBtn.setText("打开室内图");

        Toast.makeText(MainActivity.this, "室内图已关闭", Toast.LENGTH_SHORT).show();
    }

注:IndoorRoutelineOverlay类相关的代码在官方的demo中有,直接复制过来即可

  设置监听事件来监听进入和移出室内图

  

  mbaiduMap.setOnBaseIndoorMapListener(new BaiduMap.OnBaseIndoorMapListener() {
            @Override
            public void onBaseIndoorMapMode(boolean b, MapBaseIndoorMapInfo mapBaseIndoorMapInfo) {
                if (b == false || mapBaseIndoorMapInfo == null) {
                    stripListView.setVisibility(View.INVISIBLE);
                    return;
                }
                mFloorListAdapter.setmFloorList( mapBaseIndoorMapInfo.getFloors());
                stripListView.setVisibility(View.VISIBLE);
                stripListView.setStripAdapter(mFloorListAdapter);
                mMapBaseIndoorMapInfo = mapBaseIndoorMapInfo;
            }
        });

添加楼层信息

stripListView = new StripListView(this);
        layout.addView(stripListView);
        setContentView(layout);
        mFloorListAdapter = new BaseStripAdapter(MainActivity.this);

实现楼层间地图切换,展示不同楼层的室内图

  stripListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                if (mMapBaseIndoorMapInfo == null) {
                    return;
                }
                // 切换楼层信息
                //strID 通过 mMapBaseIndoorMapInfo.getID()方法获得
                String floor = (String) mFloorListAdapter.getItem(position);
                mbaiduMap.switchBaseIndoorMapFloor(floor, mMapBaseIndoorMapInfo.getID());
                mFloorListAdapter.setSelectedPostion(position);
                mFloorListAdapter.notifyDataSetInvalidated();
            }
        });

然后运行工程,室内图已经出现了,如图:

并且可以成功切换楼层

 

2、方向传感器的实现

新建MyOrientationListener用来负责定位图标与方向传感器相结合

public class MyOrientationListener implements SensorEventListener {
    private SensorManager mSensorManager;
    private Context context;
    private Sensor mSensor;// 传感器

    private float lastX;

    public MyOrientationListener(Context context) {
        this.context = context;
    }

    // 开启监听
    @SuppressWarnings("deprecation")
    public void start() {
        //获得系统服务
        mSensorManager=(SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
        if(mSensorManager!=null){
            //获得方向传感器
            mSensor=mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
        }
        if(mSensor!=null){
            mSensorManager.registerListener(this, mSensor,SensorManager.SENSOR_DELAY_UI);//第三个参数为经度
        }
    }

    // 结束监听
    public void stop() {
        //停止定位
        mSensorManager.unregisterListener(this);
    }

    // 经度发生改变时
    @Override
    public void onAccuracyChanged(Sensor arg0, int arg1) {

    }

    // 纬度发生改变时
    @Override
    public void onSensorChanged(SensorEvent event) {
        //如果事件返回的类型是方向传感器
        if(event.sensor.getType()==Sensor.TYPE_ORIENTATION){
            float x=event.values[SensorManager.DATA_X];
            //如果变化大于一度
            if(Math.abs(x-lastX)>1.0){
                //通知主界面进行回掉
                if(mOnOrientationListener!=null){
                    mOnOrientationListener.onOrientationChanged(x);
                }
            }
            lastX=x;
        }
    }


    private OnOrientationListener mOnOrientationListener;

    public void setmOnOrientationListener(
            OnOrientationListener mOnOrientationListener) {
        this.mOnOrientationListener = mOnOrientationListener;
    }

    //回掉接口
    public interface OnOrientationListener{
        void onOrientationChanged(float x);
    }

}

初始化方向传感器

 private void initOritationListener()
    {
        myOrientationListener = new MyOrientationListener(
                getApplicationContext());
        myOrientationListener
                .setmOnOrientationListener(new MyOrientationListener.OnOrientationListener()
                {
                    @Override
                    public void onOrientationChanged(float x)
                    {
                        mCurrentX = (int) x;

                        // 构造定位数据
                        MyLocationData locData = new MyLocationData.Builder()
                                .accuracy(mCurrentAccracy)
                                // 此处设置开发者获取到的方向信息,顺时针0-360
                                .direction(mCurrentX)
                                .latitude(mCurrentLantitude)
                                .longitude(mCurrentLongitude).build();
                        // 设置定位数据
                        mbaiduMap.setMyLocationData(locData);
                        // 设置自定义图标
//                        BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory
//                                .fromResource(R.mipmap.navi_map_gps_locked);
                        MyLocationConfiguration config = new MyLocationConfiguration(
                                MyLocationConfiguration.LocationMode.NORMAL, true, null);
                        mbaiduMap.setMyLocationConfigeration(config);

                    }
                });
    }

重载Onstart()和OnStop()方法

 @Override
    protected void onStart() {
        super.onStart();
        // ATTENTION: This was auto-generated to implement the App Indexing API.
        // See https://g.co/AppIndexing/AndroidStudio for more information.
        //开启定位的允许
        mbaiduMap.setMyLocationEnabled(true);
        if (!mLocationClient.isStarted()) {
            mLocationClient.start();
            //开启方向传感器
            myOrientationListener.start();
        }
    }
    @Override
    protected void onStop() {
        super.onStop();
        //关闭定位
        mbaiduMap.setMyLocationEnabled(false);
        mLocationClient.stop();
        //停止方向传感器
        myOrientationListener.stop();
        //client.disconnect();

    }

最终效果如图:

 

百度地图API应用教程与实战 百度地图API是一套由百度公司提供的地图服务接口,它允许开发者在应用程序中嵌入地图、搜索地点、规划路径等丰富的地图服务功能。通过这些接口,开发者可以实现地理位置信息的获取、地点搜索、路径规划等操作,无需自行构建复杂的基础地图服务,从而可以专注于应用的核心业务逻辑开发。在移动应用或者网页中嵌入百度地图,第一步就是要加载并展示地图。首先,需要在页面中引入百度地图API的JavaScript代码。接着,利用百度地图提供的API创建一个地图实例,并指定地图容器以及地图中心点和初始缩放级别。 阅读详情

相关推荐

百度地图定位及方向传感器

本文中的代码已经在文中全部出现过了,为什么还需要一个下载币呢,是因为我的下载币不够用了额,下载其他大神的代码,需要,所以请赞助一下吧。当然你不想赞助的话,你可以在文章中一个一个的copy,绝对的一模一样,绝对的开源,赞助一个下载币吧

百度地图之室内地图

召唤代码君: 头文件 #import "RoomViewController.h" #import #import #import #import #import "RoutAnnotation.h" #import "LocationTransform.h" //note:RoutAnnotation.h是直接用的百度提供的dem

suiyuechenglao的博客 8005

Qt QChart实战:从零打造一个实时温度监控仪表盘(附完整源码)

本文详细介绍了如何使用Qt QChart模块从零构建一个工业级实时温度监控仪表盘。通过实战案例,展示了波形图的绘制、坐标轴配置、数据流模拟等关键技术,并提供了完整的源码实现,帮助开发者快速掌握Qt在数据可视化领域的应用。

weixin_42537919的博客 242

mapboxGL中室内地图的实现

mapboxGL中室内地图的实现

LZUGIS 1151

扣子工作流实战演练

例如,你可以在代码节点的输入中引用大模型节点的输出,这样代码节点就可以使用大模型节点的输出。扣子的工作流节点并不是固定的,而是由一系列可以任意添加的节点组成的,每个节点都有其特定的功能和用途。扣子工作流中常见的节点类型如图4-2所示。在图像生成节点中设置模型为人像,输入参数名为input,变量值引用开始节点的renwu,正向提示词为{{input}},如图4-19所示。然后添加两个节点,选择“图像生成”和“画板”,将“开始”节点、“图像生成”节点、“画板”节点、“结束”节点依次串联,如图4-17所示。

夏天又到了的专栏 1583

Revit二次开发之双事件:空闲事件与DocumentChanged事件

对以下文章所展示的代码进行了修改,当前展示的代码可直接复制使用。 由于本人初学,下列语言为个人理解,如有错误请指正。   《引用1》中: 使用模态对话框,或者尽量保证事件在ExternalCommand的Execute函数或者ExternalApplication的OnStartup函数里面注册。 如果一定要使用非模态对话框,那么请使用ExternalEvent事件的Raise函数,强迫...

一个Revit二次开发的实习生 6146

百度地图+vue2:地面叠加层

百度地图地面叠加层示例

weixin_1095的博客 1226

vivado Block Design 设计 .tcl 文件使用,导出,修改,添加方式

在vivado中生成 Block Design可以导出tcl文件进行保存(体积小),或者在别的版本vivado中打开(版本互通),这是一个非常好的功能。另外GitHub中很多项目都是采用这种方式上传的,学会如何使用可以快速修改历程项目。

2203_75345038的博客 2493

javaweb项目中使用百度地图进行项目开发

在web项目开发过程中,可能会需要地图的支持,实现定位、导航等功能,在这里以百度地图为例,做一个简单的地图显示。 下面代码使用JSP完成的,要想使用HTML版本,只需要<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>这句话删掉,然后把文件的后缀名改成.HTML格式的即

会飞的冰箱的博客 2万+

OSCP-Challenge 2 - Relia

使用andrea:PasswordPassword_6登录远程桌面,在c盘根目录下发现一个计划任务的ps,文件,修改执行的exe位木马,获取到milana用户的反弹shell。,发现开放了一个8000端口,但是我们外部是访问不到的,它对应的页面是/var/www/internal/,这个目录下的文件我们是可以访问的,把这个文件打个包放到本地分析下。其中数据的可以直接连接mssql,但是端口是49965,不过在数据库中没发现什么可用的信息,但是可以修改密码直接进后台,这个可以先放放。

羽的博客 7754

2026年GESP3月认证C++五级真题解析

因为要合并成升序数组,所以当A[i]小于等于B[j]时,取A[i],否则取B[j]。当a[i]>a[j]时,左边数组中从i到m的所有元素都大于a[j],因此逆序对数量增加m-i+1。给定一个包含n个互不相同的正整数的数组A与一个包含m个互不相同的正整数的数组B,请你帮忙计算有多少个数在数组A与数组B中均出现。下面代码实现两个整数除法,其中被除数为一个“大整数”,用字符串表示,除数是一个小整数,用int表示,则横线处应该填写()。且a[i] > a[j],则a[i]和a[j]是一个逆序对。

lan_in的博客 116

android 百度室内地图开发,androidsdk | 百度地图API SDK

更新时间:2020-06-23室内地图简介自v4.0版起,百度地图SDK室内图功能正式上线,辅助开发者实现全新的地理位置服务体验,室内地图与百度地图App同步更新。 支持的公众建筑包含购物商场、机场和火车站等交通枢纽,医院等,截至2020年6月覆盖全国约5000+个大型购物中心,覆盖类型和城市还在持续增加中。本章节将对显示室内图、获取室内图信息、楼层切换、室内POI检索、室内路线规划等做进一步的说...

weixin_39528289的博客 558

华为OD机考双机位C卷 - 采购订单 (Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 采购订单 。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。

算法大师! 426

2019-详细Android Studio开发百度地图(3)—百度地图_配合方向感应器的定位功能的实现

百度地图_定位功能的实现和方向感应器的使用 参考官方文档(定位)步骤; 开发包中在一开始已经包含基本定位功能,略过; 配置AndroidManifest.xml文件: &amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;!-- 这个权限用于进行网络定位 --&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;uses-permission andr

花海ipa的博客 8480

RK3588 MPP,RGA,DRM,QT之RGA

RK3588多路视频采用RGA来进行混合成一帧

dreamliweiming的博客 4264

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

百度地图室内路线规划

室内路线规划 1、创建路线规划检索实例 mSearch = RoutePlanSearch.newInstance(); 2、创建路线规划检索监听器 mSearch.setOnGetRoutePlanResultListener(new OnGetRoutePlanResultListener() { @Override public ...

Done___的博客 1778

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

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

weixin_31585653的博客 440

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

矢量室内地图

因为公司项目的需要,需要开发一套室内地图,并实现路线的规划功能。因为之前没做过这方面的开发,相关的资料也比较少,所以只能一个人去摸索。刚开始我是使用一般的位图去当作的地图,但是这个也让我在后面吃了不少的苦头。 我们知道地图一般都会有缩放和拖拽等功能,正当我把一样利用位图开发的地图样例时,我发现了不少的问题: 1、位图缩放会失真; 2、图片加载比较慢; 3、会导致客户端内存溢出 。。。

黎荣恒的博客 3万+

室内定位indoor location

手机收集一些信号的指纹和强度,发送到服务器上;服务器上可以根据信号发射源的信息进行校准,返回location信息给手机。WiFi热点蓝牙超声波NFC发射特殊光谱/信号的LED灯白度实验室的资料国内企业 http://www.wifront.com/

杨江的IT分享专栏 7642

百度地图开发(七)方向传感器指向方向--指南针

效果图: 用到的小图,自行下载: 原理就是利用方向传感判断机头方向传值给定位: 方向传感代码: import android.content.Context; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListene...

lanrenxiaowen的博客 3241

Android Studio3.0对于百度地图SDK的开发(基于方向传感器实现手机朝向显示)

文章目录前言添加传感器类修改MainActivity.java测试优化平滑方向变化新增对象获取上一次定位数据修改initOrientation再次定位,画面中心点不再回到定位点迅速返回定位点添加按钮实现按钮定位点模式切换添加单选框实现功能源码 前言 上午刚说不知道怎么绑定方向传感器,下午就找到教程了…… 主要参考了花海ipa大大的这篇文章 2019-详细Android Studio开发百度地图(3)—百度地图_配合方向感应器的定位功能的实现 之前对于定位的方向,是通过getDirection()来实现的.

LanceEnder的博客 4063

百度地图在安卓上的基本使用

本文档中使用的是3.30版本的SDK。百度地图的SDK在老版本的基础上做了大量的封装,新版API使用起来更加的便捷和直观。只不过百度地图的SDK在升级过程中,部分类的内容有所改变,使用时需要查看一下手册。 本文章涵盖一下几方面内容: 地图状态更新的使用,定位,方向传感器的使用,地图覆盖物的添加,覆盖物的点击,信息窗口的使用 1. 开发前的准备工作及在Activity中显示百度地图 1)

piglite的专栏 1642

android传感器

1 加速度传感器 TYPE_ACCELEROMETER 2 温度传感器 TYPE_AMBIENT_TEMPERATURE 3 陀螺仪传感器 TYPE_GYROSCOPE 4 光线传感器 TYPE_LIGHT 5 磁场传感器 TYPE_MAGNETIC_FIELD 6 压力传感器 TYPE_PRESSURE 7 临近传感器

WangShuo的专栏 860

百度地图调用手机陀螺仪完成指向功能

一、写一个获取方向角的类 public class MyOrientationListener implements SensorEventListener { private SensorManager mSensorManager; private Context mContext; private Sensor mSensor; private float lastX; public MyOrientationListener(Context contex

qq_44747002的博客 1097
上一篇: 百度地图地图及定位实现
下一篇: 百度地图室内Poi检索
Done___
博客等级 码龄8年 65粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值