Google Maps Android SDK - OnIndoorStateChangeListener issues



我正在展示一张地图,它放大到一个特定的建筑物上。 我希望能够访问建筑物楼层和当前选定的楼层。

但是,下面的代码不起作用,我似乎误解了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 层,则第五层的索引为 0。

相关内容

  • 没有找到相关文章

最新更新