while 循环中的 mapFrag.getMapAsync() 问题
Posted
技术标签:
【中文标题】while 循环中的 mapFrag.getMapAsync() 问题【英文标题】:mapFrag.getMapAsync() problems in a while loop 【发布时间】:2020-05-27 11:09:27 【问题描述】:对于一个我不知道如何解决的问题,我真的需要帮助。
我正在尝试为我父亲申请,我将与 Map 合作。
该问题在 while 循环内的 mapFrag.getMapAsync()
中是特定的。
@Override
public void onResume()
super.onResume();
new Thread()
public void run()
while ( mapFrag.getMapAsync() == null)
try
Thread.sleep(1000);
catch (InterruptedException e)
e.printStackTrace();
runOnUiThread(new Runnable()
@Override
public void run()
configMap();
);
.start();
while ( mapFrag.getMapAsync()
,这一行得到一个错误,上面写着'
getMapAsync(OnMapReadyCallback) in SupportMapFragment cannot be applied to ()
OnMapReadyCallback 是在 MainActivity 上实现的。
【问题讨论】:
这能回答你的问题吗? Google Map:onMapReadyCallback can not be applied to this activity 不幸的是,我的问题集中在 getMapAsync 作为参数 在这种情况下,您能否提供指向您正在调用的getMapAsync()
的确切 版本的文档的链接?
【参考方案1】:
根据MapFragment.getMapAsync()
的文档:
public void getMapAsync (OnMapReadyCallback callback)
设置一个回调对象,当 GoogleMap 实例已准备好使用。
注意:
这个方法必须从主线程调用。
回调将在主线程中执行。
在用户的设备上没有安装Google Play服务的情况下,回调不会被触发,直到用户 安装它。 在
GoogleMap
创建后立即销毁的极少数情况下,不会触发回调。回调提供的
GoogleMap
对象不为空。
尤其是这个:
参数
callback
时会触发的回调对象 地图可以使用了。
在您的电话mapFrag.getMapAsync()
中没有OnMapReadyCallback
参数。所以,你应该添加它:
...
mapFrag.getMapAsync(new OnMapReadyCallback()
@Override
public void onMapReady(GoogleMap googleMap)
googleMap.moveCamera(cameraUpdate);
)
...
而且你不应该在单独的线程中调用getMapAsync()
,因为(参见上面的文档链接):
这个方法必须从主线程调用。
回调将在主线程中执行。
所以,请仔细阅读官方Get Started页面。
【讨论】:
以上是关于while 循环中的 mapFrag.getMapAsync() 问题的主要内容,如果未能解决你的问题,请参考以下文章