我在onMapReady()
方法中为GoogleMap对象设置了一个点击监听器(GoogleMap.OnMapClickListener)。
@Override
public void onMapReady(GoogleMap map) {
addClickListener(map);
}
这是addClickListener():
private void addClickListener(GoogleMap map) {
map.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng point) {
Log.d("ON_MAP_CLICK", "1. OnMapClick called");
handleOnMapClick(point);
}
});
}
由于我在onMapReady方法中设置了地图,因此我也可以在那里添加点击监听器。
问题在于点击地图的延迟和注册该点击的代码大约是1秒,而应该是即时的。
问题:问题不在于调用addClickListener(GoogleMap)所需的时间,而是onMapClick()在地图上注册点击的时间(大约1秒)。
为什么这么慢?
我正在使用GoogleMap V2
谢谢!
答案 0 :(得分:0)
很明显,在1秒后调用addClickListener方法,因为只有在初始化地图后才会调用onMapReady回调。因此,最初调用addClickListener方法需要一些延迟。
所以你只会第一次看到这种延迟而不是所有的时间,它会像预期的那样工作,你的代码不需要改变
答案 1 :(得分:0)
onMapReady将在初始化地图后调用,我有一个项目需要一段时间来加载地图,使所有功能“慢”。 您可以尝试先加载地图,以防止将其添加到Splashscreen或Activity。
new Thread(new Runnable() {
@Override
public void run() {
try {
MapView mv = new MapView(getApplicationContext());
mv.onCreate(null);
mv.onPause();
mv.onDestroy();
}catch (Exception ignored){
}
}
}).start();