3

我试图让谷歌室内地图在我的应用程序中工作。当我在 Google 地图中查看具有可用室内信息的建筑物时,它会显示其中的地点名称。在此处输入图像描述

我查找了示例 Google 室内地图项目,将新的纬度和经度添加到示例项目中,显示建筑物但不是所有地点的名称。 在此处输入图像描述

如何让它显示与谷歌地图显示相同的信息?

这是 IndoorDemoActivity 的代码

public class IndoorDemoActivity extends FragmentActivity {

  private GoogleMap mMap;

  private boolean showLevelPicker = true;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.indoor_demo);
    mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
    // SFO airport
//    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(37.614631, -122.385153), 18));
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(19.173036, 72.835679), 18));
  }

  /**
   * Called when the toggle level picker button is clicked.
   */
  public void onToggleLevelPicker(View view) {
    showLevelPicker = !showLevelPicker;
    mMap.getUiSettings().setIndoorLevelPickerEnabled(showLevelPicker);
  }

  /**
   * Called when the focused building info is clicked.
   */
  public void onFocusedBuildingInfo(View view) {
    IndoorBuilding building = mMap.getFocusedBuilding();
    if (building != null) {
      String s = "";
      for (IndoorLevel level : (List<IndoorLevel>) building.getLevels()) {
        s = s + level.getName() + " ";
      }
      if (building.isUnderground()) {
        s += "is underground";
      }
      setText(s);
    } else {
      setText("No visible building");
    }
  }

  /**
   * Called when the focused level info is clicked.
   */
  public void onVisibleLevelInfo(View view) {
    IndoorBuilding building = mMap.getFocusedBuilding();
    if (building != null) {
      IndoorLevel level = (IndoorLevel) building.getLevels().get(building.getActiveLevelIndex());
      if (level != null) {
        setText(level.getName());
      } else {
        setText("No visible level");
      }
    } else {
      setText("No visible building");
    }
  }

  /**
   * Called when the activate higher level is clicked.
   */
  public void onHigherLevel(View view) {
    IndoorBuilding building = mMap.getFocusedBuilding();
    if (building != null) {
      List<IndoorLevel> levels = building.getLevels();
      if (!levels.isEmpty()) {
        int currentLevel = building.getActiveLevelIndex();
        // The levels are in 'display order' from top to bottom,
        // i.e. higher levels in the building are lower numbered in the array.
        int newLevel = currentLevel - 1;
        if (newLevel == -1) {
          newLevel = levels.size() - 1;
        }
        IndoorLevel level = levels.get(newLevel);
        setText("Activiating level " + level.getName());
        level.activate();
      } else {
        setText("No levels in building");
      }
    } else {
      setText("No visible building");
    }
  }

  private void setText(String message) {
    TextView text = (TextView) findViewById(R.id.top_text);
    text.setText(message);
  }
}
4

1 回答 1

0

您在 Google 地图应用程序中看到的标记很可能是由 Google 地图应用程序本身通过 Google 地方信息放置的。您在应用程序中看到的有限标记集很可能作为“平面图标记”融入室内地图本身。

据我所知,要显示其他地点信息,您必须与Google Places API集成。然后,您可以使用它自己查找和添加业务标记addMarker,可能会在级别更改时清除并重新添加它们。

于 2014-09-24T03:13:41.973 回答