【发布时间】:2014-07-03 21:59:52
【问题描述】:
我在我的 android 应用程序中使用新的 Google 地图。我的大楼有不同的楼层。我需要得到当前楼层。
【问题讨论】:
-
请提供更多信息,您尝试过什么?你能展示一些代码吗?
标签: android google-maps
我在我的 android 应用程序中使用新的 Google 地图。我的大楼有不同的楼层。我需要得到当前楼层。
【问题讨论】:
标签: android google-maps
不久前您问...今天我找到了解决方案。首先,您需要最新的 google-play-services_lib (v4.4)。在 Eclipse 中,通过 SDK 管理器更新 Play Services 并按照Setup 操作。然后你需要在你的活动中实现OnIndoorStateChangeListener。不要忘记将您的活动设置为 GoogleMap 的侦听器。例如:
public class YourActivity implements OnIndoorStateChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
...
yourGoogleMap.setOnIndoorStateChangeListener(this);
}
@Override
public void onIndoorLevelActivated(IndoorBuilding indoorBuilding) {
List<IndoorLevel> levels = indoorBuilding.getLevels();
for (IndoorLevel indoorLevel : levels) {
indoorLevel.get...
}
}
当您的地图上有带有室内信息的建筑物时,您会通过回调收到一个IndoorBuilding 对象。从此IndoorBuilding 中,您可以获得IndoorLevels 的列表,在IndoorLevel 中,您可以找到一些getter。
当您调用 indoorBuilding.getActiveLevelIndex() 时,GoogleMaps 会从屋顶计数到地下室 - 与您遍历 IndoorLevel 列表的方向相同。这意味着,您可以在六英尺以下找到最大水平指数。
希望,这会有所帮助!
更新:我找到了更好的解决方案...
IndoorBuilding yourBuilding = yourGoogleMap.getFocusedBuilding();
List<IndoorLevel> levels = yourBuilding.getLevels();
String name = levels.get(yourBuilding.getActiveLevelIndex()).getName();
String shortName = levels.get(yourBuilding.getActiveLevelIndex()).getShortName();
【讨论】: