Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在谷歌室内地图上显示地名_Android_Google Maps_Indoor Positioning System - Fatal编程技术网

Android 在谷歌室内地图上显示地名

Android 在谷歌室内地图上显示地名,android,google-maps,indoor-positioning-system,Android,Google Maps,Indoor Positioning System,我正在尝试让谷歌室内地图在我的应用程序中工作。当我在谷歌地图上看到一栋有室内信息的建筑物时,它会显示其中的地点名称 我查阅了谷歌室内地图样本项目,输入了新的纬度和经度。样本项目显示了建筑物,但不是所有的地名。 如何让它显示与谷歌地图相同的信息 以下是IndoorDemoActivity的代码 public class IndoorDemoActivity extends FragmentActivity { private GoogleMap mMap; private boole

我正在尝试让谷歌室内地图在我的应用程序中工作。当我在谷歌地图上看到一栋有室内信息的建筑物时,它会显示其中的地点名称

我查阅了谷歌室内地图样本项目,输入了新的纬度和经度。样本项目显示了建筑物,但不是所有的地名。

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

以下是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);
  }
}
public类IndoorDemoActivity扩展了FragmentActivity{
私有谷歌地图;
私有布尔showLevelPicker=true;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.室内演示);
mMap=((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
//SFO机场
//mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(37.614631,-122.385153),18));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(新LatLng(19.173036,72.835679),18));
}
/**
*单击“切换级别选择器”按钮时调用。
*/
公共无效OnToggleLevel选择器(视图){
showLevelPicker=!showLevelPicker;
mMap.getUiSettings().SetIndoorLevel PickerEnabled(showLevelPicker);
}
/**
*单击重点建筑信息时调用。
*/
FOCUSEDBuildingInfo上的公共无效(视图){
IndoorBuilding building=mMap.getFocusedBuilding();
如果(建筑!=null){
字符串s=“”;
对于(IndoorLevel level:(列表)building.getLevels()){
s=s+level.getName()+“”;
}
if(building.isUnderground()){
s+=“在地下”;
}
setText(s);
}否则{
setText(“无可见建筑物”);
}
}
/**
*单击焦点级别信息时调用。
*/
VisibleLevelInfo上的公共无效(视图){
IndoorBuilding building=mMap.getFocusedBuilding();
如果(建筑!=null){
IndoorLevel level=(IndoorLevel)building.getLevels().get(building.getActiveLevelIndex());
如果(级别!=null){
setText(level.getName());
}否则{
setText(“无可见标高”);
}
}否则{
setText(“无可见建筑物”);
}
}
/**
*单击“激活更高级别”时调用。
*/
高级别上的公共无效(视图){
IndoorBuilding building=mMap.getFocusedBuilding();
如果(建筑!=null){
列表级别=building.getLevels();
如果(!levels.isEmpty()){
int currentLevel=building.getActiveLevelIndex();
//标高从上到下按“显示顺序”排列,
//也就是说,建筑中较高的楼层在阵列中编号较低。
int newLevel=当前级别-1;
如果(新级别==-1){
newLevel=levels.size()-1;
}
IndoorLevel level=levels.get(newLevel);
setText(“活动级别”+级别.getName());
level.activate();
}否则{
setText(“建筑物内无标高”);
}
}否则{
setText(“无可见建筑物”);
}
}
私有void setText(字符串消息){
TextView text=(TextView)findViewById(R.id.top_text);
text.setText(消息);
}
}

您在谷歌地图应用程序中看到的标记可能是由谷歌地图应用程序本身通过谷歌位置放置的。你在应用程序中看到的有限的标记集很可能会被烘焙到室内地图中


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

看看这个示例:@Vihaan Verma:您是否能够成功地在这个示例中添加更多标记。当你看到我的评论时,请回复我。我开始为同一家公司工作,我对这些事情感到困惑。在哪里可以找到PlacesAPI中的楼层信息?检查,它没有给出相应楼层的位置信息。还是我遗漏了什么?嗯,那里好像没有。也许看看地理编码API?它可以检索地址的楼层信息。嗯。试过了,但没有给出latlang的楼层,甚至没有给出placeID。虽然是为了响应。