Sla*_*neR 5 android google-maps
我正在尝试在Google地图上对标记进行聚类,因为地图上的标记太多(大约6000多个标记)。
因此,我在Google上搜索并找到了一些有关标记聚类的文档,并将其应用于我的源代码,但是标记未显示在Google Map中。
FragMap
片段的部分源代码。
@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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
以及EQMarkerManager
其实现GoogleMap.OnCameraIdleListener
接口的部分源代码。
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");
}
Run Code Online (Sandbox Code Playgroud)
但是onCameraIdle
从未调用过回调。为什么OnCameraIdle事件没有触发?
摇篮:
compile 'com.google.android.gms:play-services-maps:9.8.0'
compile 'com.google.maps.android:android-maps-utils:0.4.4+'
Run Code Online (Sandbox Code Playgroud)
在棉花糖设备(SDK 23版)上测试。
添加:+
gradle编译是什么意思?
“onCameraIdle”事件未触发,因为我在另一个类上调用了“setOnCameraIdleListener”。
我的问题的源代码
碎片映射:
@Override
public void onMapReady(GoogleMap googleMap) {
if (DataPackage.getEQMarkerManager() == null) {
if (!DataPackage.initializeEQMarkerManager(getActivity(), googleMap)) {
Log.w(Tag, "EQMarkerManager initialization failure");
}
}
}
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
initializeEQMarkerManager 方法会初始化 EQMarkerManager 类,并且 EQMarkerManager#ctor 会调用 setOnCameraIdleListener。我对 android 不太了解,所以我完全确定这些代码是否有效。但事实并非如此:/
无论如何,我通过在 . 内部调用 setOnCameraIdleListener 解决了这个问题FragMap
。
@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());
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3565 次 |
最近记录: |