OnCameraChangeListener()已弃用
今天,回顾我的旧代码,我发现OnCameraChangeListener()现已被弃用。OnCameraChangeListener()已弃用
我发现很难理解如何解决这片矿代码:
mGoogleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
// Cleaning all the markers.
if (mGoogleMap != null) {
mGoogleMap.clear();
}
mPosition = cameraPosition.target;
mZoom = cameraPosition.zoom;
if (mTimerIsRunning) {
mDragTimer.cancel();
}
mDragTimer.start();
mTimerIsRunning = true;
}
});
新的监听器(又名OnCameraMoveListener())方法onCameraMove()没有一个CameraPosition cameraPosition输入变量,所以我很迷茫:有没有办法回收我的旧代码?
Here是一些参考文献。
在camera change events的新模型中,您确认CameraPosition
未传递给侦听器。
相反,只要您特别需要它(即移动开始,中间移动,取消或完成/返回到空闲状态),您就应该使用getCameraPosition()。
在play-services-maps 9.4.0 version of the API,他们有三个摄像听众更换GoogleMap.OnCameraChangeListener()
:基于您的代码
GoogleMap.OnCameraMoveStartedListener
GoogleMap.OnCameraMoveListener
GoogleMap.OnCameraIdleListener
,我认为你需要使用GoogleMap.OnCameraIdleListener
和GoogleMap.OnCameraMoveStartedListener
像这样:
mGoogleMap.setOnCameraMoveStartedListener(new GoogleMap.OnCameraMoveStartedListener() {
@Override
public void onCameraMoveStarted(int i) {
mDragTimer.start();
mTimerIsRunning = true;
}
});
mGoogleMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
// Cleaning all the markers.
if (mGoogleMap != null) {
mGoogleMap.clear();
}
mPosition = mGoogleMap.getCameraPosition().target;
mZoom = mGoogleMap.getCameraPosition().zoom;
if (mTimerIsRunning) {
mDragTimer.cancel();
}
}
});
我在'setOnCameraIdleListener'上调用api,它在地图上绘制标记,但是当我点击'marker'时,又调用了'setOnCameraIdleListener',该怎么办? –
明智的做法是使用新推出四款相机的听众(OnCameraIdleListener
,OnCameraMoveListener
,OnCameraMoveStartedListener
,OnCameraMoveCanceledListener
),但如果你还是想要去的android-maps-utils
setOnCameraChangeListener
使用特定版本(下面给出)
编译'com.google.maps.android:android-maps-utils:0.4.3'
在你的模块级别的gradle文件中。
这将很容易 - 如果getCameraPosition不会分配内存并导致我的应用程序在每次回调时由于gc运行而调用getCameraPosition时都会出现口吃。 :/ –
@MatthiasSchicker - 随时[针对地图SDK提交问题](https://code.google.com/p/gmaps-api-issues/) – ianhanniballake
实际上这是Google Maps SDK中的一个已知问题(https://code.google.com/p/gmaps-api-issues/issues/detail?id=6483),但现在似乎已经修复。对不起,并不是最新的。 –