android - 更改 StreetView<->Satellite Google Maps Android

标签 android view maps

我想通过菜单按钮在街景 View 和卫星 View 之间切换我的 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 - 更改 StreetView<->Satellite Google Maps Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6471357/

相关文章:

android - 一种识别 subview 的简单方法

mysql - MySQL View 的性能比底层查询差

android - 如何使用 ffmpeg 命令在 android 中的 .avi 视频中添加文本标题

android 保存以编程方式创建的 View

android - 与 ItemizedOverlay 结合使用的 map 叠加性能非常差

csv - d3.js - 在可缩放、可点击的 map 上绘制点

ios - xcode KML Viewer 在 map 上仅显示 5 英里左右

android - 如何为 Cordova 项目添加 "uses-permissions"标签到 AndroidManifest.xml?

java - 如何将字符串集保存到共享首选项

java - 如何在不调用 onPause 和 onStop 的情况下调用 ondestroy() 方法