在Google室内地图上显示地点名称

3
我正在尝试让Google室内地图在我的应用程序中运行。当我在Google地图上查看有室内信息的建筑物时,它会显示其中的地点名称。enter image description here 我查看了示例Google室内地图项目,并输入新的纬度和经度,示例项目显示了该建筑物,但并未显示所有地点名称。enter image description here 如何使其显示与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);
  }
}

1
请看这个例子:http://eagle.phys.utk.edu/guidry/android/mappingDemo.html - davidcondrey
@Vihaan Verma:你能否成功添加更多的标记?请在看到我的评论时回复我。我已经开始为此工作,但对这些事情感到困惑。 - sam_k
1个回答

0

你在Google Maps应用程序中看到的标记很可能是通过Google Places自己放置的。你在应用程序中看到的有限数量的标记很可能已经嵌入到室内地图本身中,就像"楼层平面图标记"一样。

据我所知,要显示其他地方的信息,您必须集成 Google Places API。然后您可以使用该API查找并使用addMarker添加商家标记,每当楼层发生变化时可能需要清除和重新添加它们。


在Places API中如何查找楼层信息?请查看https://developers.google.com/places/webservice/details?hl=en,但它并没有提供特定楼层信息。或者是我遗漏了什么吗? - MohK
嗯,看起来那里没有这个功能。也许可以查看地理编码 API?它可以检索地址的楼层信息。https://developers.google.com/maps/documentation/geocoding/intro - Daniel Waechter
嗯。我试过了,但没有提供latlang的楼层甚至placeID。虽然感谢您的回复。 - MohK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接