Android : Showing place names on Google indoor map

on Sunday, September 7, 2014


I m trying to get Google indoor maps to work inside my app. When I look at a building in Google maps with indoor information available it shows the name of the places in it. enter image description here


I looked up the sample Google Indoor maps project, putting new latitude and longitude the sample project shows the building but not all the name of places. enter image description here


How do I make it show the same information as Google maps show ?


Here is the code for 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);
}
}

0 comments:

Post a Comment