android - Google Maps Android SDK - OnIndoorStateChangeListener 问题
问题描述
我正在显示一张地图,它会放大到特定的建筑物。我希望能够访问建筑物楼层和当前选定的楼层。
但是,下面的代码不起作用,我似乎误解了 GoogleMap.OnIndoorStateChangeListener 的意思
public class MapsActivity extends AppCompatActivity implements OnMapReadyCallback, GoogleMap.OnIndoorStateChangeListener{
private GoogleMap mMap;
@Override
public void onIndoorBuildingFocused(){
IndoorBuilding indoorBuilding = mMap.getFocusedBuilding();
List<IndoorLevel> levels = indoorBuilding.getLevels();
for (IndoorLevel indoorLevel : levels) {
System.out.println(indoorLevel);
}
}
@Override
public void onIndoorLevelActivated(IndoorBuilding indoorBuilding) {
List<IndoorLevel> levels = indoorBuilding.getLevels();
for (IndoorLevel indoorLevel : levels) {
System.out.println(indoorLevel);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LatLng Location = new LatLng(51.501390, -2.548590);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(Location, 18));
}
}
例如,当默认 Google 楼层选择器中的选择发生更改时,我将如何正确返回建筑物楼层和当前楼层?
谢谢
解决方案
您可以使用getActiveLevelIndex()
公共方法下的onIndoorLevelActivated(IndoorBuilding building)
。
这是一个示例代码片段:
googleMap.setOnIndoorStateChangeListener(new GoogleMap.OnIndoorStateChangeListener() {
@Override
public void onIndoorBuildingFocused() {
}
@Override
public void onIndoorLevelActivated(IndoorBuilding indoorBuilding) {
List<IndoorLevel> levels = indoorBuilding.getLevels();
int level = indoorBuilding.getActiveLevelIndex();
Log.d("Tag", "Level Index: " + String.valueOf(level));
String currentFloor = levels.get(level).getName();
Log.d("Tag", "Level: " + currentFloor);
}
});
注意:索引(0)对应于最高楼层。因此,如果建筑物有 5 个楼层,则第 5 个楼层的索引为 0。
推荐阅读
- python - Python read()不显示输出
- node.js - 特定弹性 beanstalk 环境的应用程序部署显示运行状况下降
- node.js - Node.JS 使用 MD5 / ECB 和使用 PKCS7 的填充进行加密
- r - as.coded.data 函数不会用变量代替 R 中的数字
- excel - 用于 Netflix 观看活动标题的正则表达式(使用“剧集”的电视节目与电影)
- html - Flexbox 内容响应式网格行
- sql - FCFG SQL 查询,无法生成 AND 查询
- c# - 方法本身使用工厂方法创建类时的模拟测试场景
- angular - 显示 html 内容的 Angular 表单
- sql - 根据 SQL 中的另一列获取最大日期