我想通过菜单按钮在街景和卫星之间切换我的 GoogleMaps View 。

这是我的代码:

public boolean onCreateOptionsMenu(Menu menu){

    menu.add(0, 0, 0, "StreetView");
    menu.add(0, 0, 1, "Satellite");

    return true;
}

public boolean onOptionsItemSelected (MenuItem item){

    switch (item.getItemId()){
        case 0:
            mapView.setStreetView(true);
        return true;

        case 1 :
            mapView.setSatellite(true);
        return true;

    }

    return false;
}

不会工作..我怎么了?

谢谢,
前缀

最佳答案

当您说它不起作用时,我们真的需要更多信息来尝试帮助您!它是否崩溃,它是否停留在街景/卫星 View 或只是普通 map 等,尝试提供更多信息,如果它崩溃,请发布 logcat 的副本。

我认为你所缺少的只是这一行:

(编辑:我只是在没有调用 invalidate 的情况下尝试了它并且它可以工作,所以它必须是菜单按钮 ID)

mapView.invalidate();

您需要调用它以使 mapView 刷新自身,因此每次更改 mapView 设置时都调用它。

如果这不起作用,则可能是您的开关无法识别按钮的 ID,因此请尝试将菜单设置为 xml 文件 int res/menu/,例如:
<?xml version="1.0" encoding="utf-8"?>
<menu
  xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:title="Street View" android:numericShortcut="1" android:id="@+id/mapStreet" ></item>
  <item android:title="Sat View" android:numericShortcut="2" android:id="@+id/mapSat"></item>
</menu>

然后将您的代码修改为:
public boolean onCreateOptionsMenu(Menu menu){
    super.onCreateOptionsMenu(menu);
    MenuInflater oMenu = getMenuInflater();
    oMenu.inflate(R.menu.mapsmenu, menu);
    return true;
}

public boolean onOptionsItemSelected(MenuItem item){
    switch(item.getItemId()){
    case R.id.mapStreet:
         mapView.setStreetView(true);
         mapView.setSatellite(false);
         mapView.invalidate();
         return true;

    case R.id.mapSat:
         mapView.setSatellite(true);
         mapView.setStreetView(false);
         mapView.invalidate();
         return true;
    }
    return false;
}

关于android - 改变街景<->卫星谷歌 map Android,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6471357/

10-11 20:15