我有一个选项菜单,允许用户在谷歌地图上更改地图类型。这工作正常,但我想提供功能来更改目前显示我用布尔值控制的标记。这是我目前的代码。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.map_styles_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch(item.getItemId()) {
case R.id.normal_map:
mapType=GoogleMap.MAP_TYPE_NORMAL;
break;
case R.id.satellite_map:
mapType=GoogleMap.MAP_TYPE_SATELLITE;
break;
case R.id.terrain_map:
mapType=GoogleMap.MAP_TYPE_TERRAIN;
break;
case R.id.hybrid_map:
mapType=GoogleMap.MAP_TYPE_HYBRID;
break;
}
googleMap.setMapType(mapType);
return true;
}
我想我想做的是创建另一个案例陈述,如此
case R.id.present:
mapChange=true;
break;
case R.id.past:
mapChange=false;
break;
我使用菜单XML文件中的项来表示地图,我是否也可以使用项来更改布尔值?
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/map_types"
android:title="Menu"
android:showAsAction="always">
<menu>
<item android:id="@+id/normal_map"
android:title="Mormal map"/>
<item android:id="@+id/satellite_map"
android:title="Satellite map"/>
<item android:id="@+id/terrain_map"
android:title="Terrain map"/>
<item android:id="@+id/hybrid_map"
android:title="Hybrid map"/>
</menu>
</item>
所以我会在上面添加一个项目,如
<item android:id="@+id/past"
android:title="Change to past markers"/>
答案 0 :(得分:0)
首先,我建议您尝试一切您认为可行的方法。如果仍然没有找到答案,那么发布在SO上。 根据您提到的解释和我的有限知识,我得出结论,您需要在选项菜单中选择一个选项,该选项将在您的标记屏幕和其他标记屏幕之间切换。
所以在xml中添加选项:
<item android:id="@+id/past"
android:title="Change to past markers"/>
然后在你的java文件中添加以下代码:
case R.id.past:
if(mapChange){
mapChange=false;
//your code to show other markers
}else{
mapChange=true;
//your code to show same markers etc
}
break;
答案 1 :(得分:0)
如果你想要,你可以创建另一个名为“changeState()”的方法,并将你建议的开关案例放在那个方法中
Private void changeState() {
Switch(VARIABLE-HERE)
{
case R.id.present:
mapChange=true;
break;
case R.id.past:
mapChange=false;
break;
}
}
然后打电话给它。
googleMap.setMapType(地图类型);