【问题标题】:How to get the floor level如何获得楼层高度
【发布时间】:2024-09-29 10:25:02
【问题描述】:

我正在进行一个项目,必须在 Google maps android api v2 的室内部分的不同楼层上绘制路径。我已经启用了室内,但有什么方法可以附加一个监听器或以任何其他方式通知显示的楼层,或者只获取显示的名称或号码?

提前致谢!

【问题讨论】:

    标签: android google-maps map


    【解决方案1】:
            map.setOnIndoorStateChangeListener(new GoogleMap.OnIndoorStateChangeListener() {
    
            @Override
            public void onIndoorBuildingFocused() {
    
            }
    
            @Override
            public void onIndoorLevelActivated(IndoorBuilding building) {
                int activeLevelIndex = building.getActiveLevelIndex();
            }
    
        });
    

    【讨论】:

      【解决方案2】:

      在室内路径导航中,基于 wifi 的导航比 GPS 要好得多。所以获取楼层高度的一种方法是在每层楼的入口位置设置一个接入点(AP),即电梯或楼梯的开口处。因此,根据来自 AP 的信号,您可以区分楼层。

      WifiManager wManager;
      List<ScanResult> wifiList; 
      
      wManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
      // Inside BroadcastReceiver()
      wifiList = wManager.getScanResults();
      for (int i=0; i<wifiList.size(); i++){
          ScanResult scanresult = wManager.getScanResults().get(i);                        
          System.out.println("SSID: "+ssid);
          System.out.println("RSSI: "+scanresult.level);
         }
      

      SSID 给出 AP 的名称,RSSI 给出信号强度。因此,即使存在来自更近楼层的另一个 AP 信号,您也可以通过这些数据识别楼层。

      【讨论】:

      • 如果问题是要知道设备的位置,这将很有用,但是,问题是我必须知道地图上显示的是哪个楼层,并在此绘制所需的路径,即使虽然我不在该地区。