当前位置: 首页 > 知识库问答 >
问题:

用getMapAsync替换getMap

柯波峻
2023-03-14

我想用getMapAsync替换不推荐的getMap方法,但我没有使用MapFragment方法,而是使用GoogleMap方法,如下所示:

private GoogleMap googleMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);

    try {
        if(googleMap == null) {
            googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
        }
        googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        googleMap.setMyLocationEnabled(true);
        googleMap.setTrafficEnabled(true);
        googleMap.setIndoorEnabled(true);
        googleMap.setBuildingsEnabled(true);
        googleMap.getUiSettings().setZoomControlsEnabled(true);

如果我像这样将googleMap替换为MapFragment,我将无法再设置映射类型,等等。那么,在我的情况下,如何更改为getMapAsync?

MapFragment mapFragment = (MapFragment) getFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);

共有3个答案

郑宜民
2023-03-14

如果使用MapFragment,则仍然可以使用stMapType方法。在活动中实施OnMapReadyCallback。创建MapFragment并在该对象上调用getAsyncMap方法。它会要求您输入onMapReady(GoogleMap map)方法,在那里您可以设置映射类型等等。希望有帮助。

隆飞宇
2023-03-14

非常简单,只需让您的活动实现OnMapReadyCallback接口,然后在onMapReady()回调中分配您的googleMap引用。

然后,在googleMap上执行所需的任何操作。

这是一个简单的例子:

public class MainActivity extends Activity implements OnMapReadyCallback {

    private GoogleMap googleMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MapFragment mapFragment = (MapFragment) getFragmentManager()
                .findFragmentById(R.id.map);

        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap map) {

        googleMap = map;

        setUpMap();

    }

    public void setUpMap(){

        googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        googleMap.setMyLocationEnabled(true);
        googleMap.setTrafficEnabled(true);
        googleMap.setIndoorEnabled(true);
        googleMap.setBuildingsEnabled(true);
        googleMap.getUiSettings().setZoomControlsEnabled(true);
    }


}
郏瀚
2023-03-14

与官方文档一样,get-map-async需要回调;这就是谷歌地图的“主要入口点”了!

public class MapPane extends Activity implements OnMapReadyCallback {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.map_activity);

        MapFragment mapFragment = (MapFragment) getFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap map) {
        // DO WHATEVER YOU WANT WITH GOOGLEMAP
        map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        map.setMyLocationEnabled(true);
        map.setTrafficEnabled(true);
        map.setIndoorEnabled(true);
        map.setBuildingsEnabled(true);
        map.getUiSettings().setZoomControlsEnabled(true);
    }
}
 类似资料:
  • 我试图创建一个使用谷歌地图的项目的定位器功能的华为变体。但我的问题是onMapReady()回调在getMapAsync()之后根本不触发 但是当使用huawei map依赖项时,getMapAsync()之后根本不会触发onMapReady回调

  • 问题内容: 假设我的格式如下: 我想将小数点替换为空白,使其看起来像这样: 我该怎么做呢?我以为可以解决问题,但是当我尝试这样时: 我收到了一个错误消息,因为它可能不是字符。那是有道理的,那么我还能怎么完成我想要的? 问题答案: 如果您只是将单引号换成双引号,那么这将起作用,因为空字符串是合法值,而不是“空字符”,并且有重载。请记住,这是的超类型。

  • 问题内容: 我正在使用UpdatePanel在页面中异步调用按钮单击事件,该页面调用另一个类中的方法,该方法在输出中写出XML文件。有没有办法用JQuery而不是UpdatePanel做到这一点? 问题答案: 使用jQuery处理click事件。然后,使用此技术在后台代码中调用page方法。在这里,您可以编写XML文件或执行其他任何操作。

  • 问题内容: 我是一名工程专业的学生,​​我必须做大量的数值处理,绘图,模拟等工作。我目前使用的工具是Matlab。我在大多数作业中都用它在大学计算机中。但是,我想知道有哪些可用的免费选项。 我已经做过一些研究,许多人说python在各种情况下都可以替代matlab。我想知道如何用python做所有这些事情。我正在使用Mac,如何安装不同的python软件包。那些包是什么?这真的是可行的选择吗?使用

  • 这是这里的后续问题。我正试图在这个实现的基础上实现k-means。它工作得很好,但我想用替换,但我不确定如何替换(我现在不担心性能)。以下是相关的简化代码: 请注意,将给出: 地图(23)- 和: 在地图kmeans.scala:75 相关问题:在ApacheSpark(Scala)中使用reduceByKey。 一些文件: DEF还原ByKey(func:(V, V)0020 V): RDD[(

  • Git 对象是不可改变的,但它提供一种有趣的方式来用其他对象假装替换数据库中的 Git 对象。 replace 命令可以让你在 Git 中指定一个对象并可以声称“每次你遇到这个 Git 对象时,假装它是其他的东西”。 在你用一个不同的提交替换历史中的一个提交时,这会非常有用。 例如,你有一个大型的代码历史并想把自己的仓库分成一个短的历史和一个更大更长久的历史,短历史供新的开发者使用,后者给喜欢数据