gpt4 book ai didi

android - GoogleMap onCameraIdle 事件未触发

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:41:48 26 4
gpt4 key购买 nike

我正在尝试对谷歌地图上的标记进行聚类,因为 map 上的标记太多(大约 6000 多个标记)。

所以我用谷歌搜索并找到了一些关于标记聚类的文档,并将其应用到我的源代码中,但标记没有显示在谷歌地图中。

FragMap fragment 的部分源代码。

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
SupportMapFragment map = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.display_map);
if (map == null) {
Log.e(Tag, "Google Map fragment(id: display_map) is null reference!");
return;
}

map.getMapAsync(this);
}

@Override
public void onMapReady(GoogleMap googleMap) {
if (DataPackage.getEQMarkerManager() == null) {
if (!DataPackage.initializeEQMarkerManager(getActivity(), googleMap)) {
Log.w(Tag, "EQMarkerManager initialization failure");
}
}
}

EQMarkerManager 的部分源代码,它实现了GoogleMap.OnCameraIdleListener 接口(interface)。

public EQMarkerManager(Context ctx, GoogleMap map) {
// ...
clusterManager = new ClusterManager<>(ctx, map);
clusterManager.setRenderer(new EQRenderer<>(ctx, map, clusterManager));

map.setOnCameraIdleListener(this);

clusterManager.addItems(markers);
}

@Override
public void onCameraIdle() {
Log.d(Tag, "onCameraIdle");
}

但是 onCameraIdle 回调从未被调用过。为什么 OnCameraIdle 事件没有触发?

渐变:

compile 'com.google.android.gms:play-services-maps:9.8.0'
compile 'com.google.maps.android:android-maps-utils:0.4.4+'

在 Marshmallow 设备(SDK 版本 23)上测试。

已添加:gradle compile 中的+ 是什么意思?

最佳答案

“onCameraIdle”事件没有触发,因为我在另一个类上调用了“setOnCameraIdleListener”。

我的问题的源代码

fragment 映射:

@Override
public void onMapReady(GoogleMap googleMap) {
if (DataPackage.getEQMarkerManager() == null) {
if (!DataPackage.initializeEQMarkerManager(getActivity(), googleMap)) {
Log.w(Tag, "EQMarkerManager initialization failure");
}
}
}

EQMarkerManager:

public EQMarkerManager(Context ctx, GoogleMap map) {
// ...
clusterManager = new ClusterManager<>(ctx, map);
clusterManager.setRenderer(new EQRenderer<>(ctx, map, clusterManager));

map.setOnCameraIdleListener(this);

clusterManager.addItems(markers);
}


initializeEQMarkerManager 方法会初始化 EQMarkerManager 类并且 EQMarkerManager#ctor 会调用 setOnCameraIdleListener。我对 android 了解不多,所以我完全确定这些代码是有效的。但它不是 :/

无论如何,我通过在 FragMap 中调用 setOnCameraIdleListener 来解决这个问题。

@Override
public void onMapReady(GoogleMap googleMap) {
if (DataPackage.getEQMarkerManager() == null) {
if (!DataPackage.initializeEQMarkerManager(getActivity())) {
Log.w(Tag, "EQMarkerManager initialization failure");
return;
}
}

googleMap.setOnCameraIdleListener(DataPackage.getEQMarkerManager());
}

关于android - GoogleMap onCameraIdle 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40816110/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com