作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试让 Google 室内地图在我的应用程序中运行。当我在谷歌地图中查看具有可用室内信息的建筑物时,它会显示其中的地点名称。
我查看了示例 Google 室内地图项目,将新的经纬度放入示例项目中,该示例项目显示了建筑物,但没有显示所有地名。
如何让它显示与 Google map 显示的信息相同的信息?
这是 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);
}
}
最佳答案
您在 Google map 应用中看到的标记很可能是由 Google map 应用本身通过 Google Places 放置的。您在应用程序中看到的有限标记集可能作为 "Floor Plan markers" 嵌入到室内地图本身中。 .
据我所知,要显示其他地方的信息,您必须与 Google Places API 集成.然后,您可以使用它自己通过 addMarker
查找和添加业务标记,可能会在级别更改时清除并重新添加它们。
关于android - 在 Google 室内地图上显示地名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25708831/
leaflet:一个开源并且对移动端友好的交互式地图 JavaScript 库 中文文档: https://leafletjs.cn/reference.html 官网(英文): ht
我是一名优秀的程序员,十分优秀!