将Google地图Android版的街景视图<->卫星视图更改

3

我想通过菜单按钮在街景视图和卫星视图之间切换我的Google地图视图。

这是我的代码:

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;
}

不起作用..我做错了什么?

谢谢, prexx

2个回答

7
当你说它不起作用时,我们需要更多信息来尝试帮助你!它是否崩溃,是否停留在街景/卫星视图或普通地图等,请提供更多信息,如果它崩溃了,请发布logcat的副本。
我认为你所缺少的只是这一行:
(编辑:我刚刚尝试了一下不调用invalidate,它可以工作,所以这一定是菜单按钮ID的问题)
mapView.invalidate();

您需要调用此函数以使地图视图刷新自身,因此在更改地图视图设置时每次调用它。


如果这不起作用,则可能是您的按钮ID在switch中未被识别,因此请尝试将菜单设置为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;
}

哎呀...我发帖子太快了...你的第二个提示是以另一种方式设置菜单。我刚才“烤”了--item.getItemId()--,发现两个菜单按钮上都是0...我的错误在这里:menu.add(0, 1, 1, "卫星"); 对不起,各位...:/ 谢谢你,kenny - Prexx
使用XML设置菜单会使生活更轻松,因为所有ID都已注册,如果您想添加额外的按钮,这非常简单。 - Kenny

6
不要使用MapView。 使用GoogleMap,并执行。
GoogleMap map;
map.setMapType(GoogleMap.MAP_TYPE_SATELLITE);

3
虽然晚了三年,但还是谢谢你。 - Prexx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接