OnCameraChangeListener() 已弃用
OnCameraChangeListener() is 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;
}
});
新的侦听器(又名 OnCameraMoveListener())方法 onCameraMove() 没有 CameraPosition cameraPosition 输入变量,所以我很迷茫:有没有办法回收我的旧代码?
Here 是一些参考。
在 camera change events 的新模型中,CameraPosition
未传递到侦听器是正确的。
相反,您应该在特别需要时使用 getCameraPosition()(即移动开始、移动中、取消或 finished/returned 空闲时)。
在 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();
}
}
});
建议使用新引入的四个摄像头侦听器(OnCameraIdleListener
、OnCameraMoveListener
、OnCameraMoveStartedListener
、OnCameraMoveCanceledListener
),但如果您仍然想使用setOnCameraChangeListener
使用特定版本的 android-maps-utils
(如下所示)
compile 'com.google.maps.android:android-maps-utils:0.4.3'
在您的模块级别 gradle 文件中。
onnCameraChangeListener()
现已弃用,您可以使用
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 {
}
这里mMap
是GoogleMap
对象,我在里面调用它
override fun onMapReady(map: GoogleMap?) {
mMap = map as GoogleMap
//your stuff
}
使用mGoogleMap.setOnCameraIdleListener代替mGoogleMap.setOnCameraChangeListener.
mGoogleMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
mPosition = mGoogleMap.getCameraPosition().target;
mZoom = mGoogleMap.getCameraPosition().zoom;
double lat = mGoogleMap.getCameraPosition().target.latitude;
double lng = mGoogleMap.getCameraPosition().target.longitude;
}
});
今天,回顾我的旧代码,我发现 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()(即移动开始、移动中、取消或 finished/returned 空闲时)。
在 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();
}
}
});
建议使用新引入的四个摄像头侦听器(OnCameraIdleListener
、OnCameraMoveListener
、OnCameraMoveStartedListener
、OnCameraMoveCanceledListener
),但如果您仍然想使用setOnCameraChangeListener
使用特定版本的 android-maps-utils
(如下所示)
compile 'com.google.maps.android:android-maps-utils:0.4.3'
在您的模块级别 gradle 文件中。
onnCameraChangeListener()
现已弃用,您可以使用
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 {
}
这里mMap
是GoogleMap
对象,我在里面调用它
override fun onMapReady(map: GoogleMap?) {
mMap = map as GoogleMap
//your stuff
}
使用mGoogleMap.setOnCameraIdleListener代替mGoogleMap.setOnCameraChangeListener.
mGoogleMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
mPosition = mGoogleMap.getCameraPosition().target;
mZoom = mGoogleMap.getCameraPosition().zoom;
double lat = mGoogleMap.getCameraPosition().target.latitude;
double lng = mGoogleMap.getCameraPosition().target.longitude;
}
});