Dav*_*e3i 35 android listener deprecated
今天,回顾我的旧代码,我发现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;
}
});
Run Code Online (Sandbox Code Playgroud)
新的侦听器(又名OnCameraMoveListener())方法onCameraMove()没有CameraPosition cameraPosition输入变量,所以我很丢失:有没有办法回收我的旧代码?
这里有一些参考.
小智 60
在play-services-maps 9.4.0版本的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();
}
}
});
Run Code Online (Sandbox Code Playgroud)
ian*_*ake 30
在相机更改事件的新模型中,您是正确的,CameraPosition
不会传递给侦听器.
相反,只要你特别需要它就可以使用getCameraPosition()(即移动开始,移动中,取消或完成/返回空闲时).
我只是在Kotlin中更新@ Barrak90的答案。由于OnCameraChangeListener()现在已弃用,因此您可以使用
mMap.setOnCameraMoveStartedListener { reason: Int ->
when (reason) {
GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE -> {
Log.d("camera", "The user gestured on the map.")
}
GoogleMap.OnCameraMoveStartedListener
.REASON_API_ANIMATION -> {
Log.d("camera", "The user tapped something on the map.")
}
GoogleMap.OnCameraMoveStartedListener
.REASON_DEVELOPER_ANIMATION -> {
Log.d("camera", "The app moved the camera.")
}
}
}
mMap.setOnCameraIdleListener {
val midLatLng: LatLng = mMap.cameraPosition.target//map's center position latitude & longitude
}
mMap.setOnCameraMoveStartedListener {
}
Run Code Online (Sandbox Code Playgroud)
这mMap
是GoogleMap
物体,我在里面称呼它
override fun onMapReady(map: GoogleMap?) {
mMap = map as GoogleMap
//your stuff
}
Run Code Online (Sandbox Code Playgroud)
明智的做法是使用新推出四款相机的听众(OnCameraIdleListener
,OnCameraMoveListener
,OnCameraMoveStartedListener
,OnCameraMoveCanceledListener
),但如果你还是想要去setOnCameraChangeListener
使用特定版本android-maps-utils
(下面给出)
编译'com.google.maps.android:android-maps-utils:0.4.3'
在您的模块级gradle文件中。
归档时间: |
|
查看次数: |
28680 次 |
最近记录: |