Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

onMapChange() bug #8800

Closed
Larnoo opened this issue Apr 24, 2017 · 6 comments
Closed

onMapChange() bug #8800

Larnoo opened this issue Apr 24, 2017 · 6 comments
Assignees
Labels
Android Mapbox Maps SDK for Android

Comments

@Larnoo
Copy link

Larnoo commented Apr 24, 2017

Platform: Android
Mapbox SDK version: 5.0.0

Steps to trigger behavior

  1. I use mapView.addOnMapChangedListener(this)
  2. I animate camera position from zoom 8 to 10.
  3. when animation end, the onMapChange is not called. I get the camera position zoom is not 10 at onMapChange. The log is as follow.
I/MainActivity: animateToCurrentCity before cameraPosition: Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:8.0, Bearing:-0.0, Tilt:0.0
I/MainActivity: animateToCurrentCity target cameraPosition: Target: LatLng [latitude=37.566536, longitude=126.977966, altitude=0.0], Zoom:10.0, Bearing:-1.0, Tilt:-1.0
I/CKSupportMapFragment: onMapChanged() change = [4]; cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:8.0, Bearing:-0.0, Tilt:0.0
I/CKSupportMapFragment: onMapChanged() change = [4]; cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:9.995598601241971, Bearing:-0.0, Tilt:0.0
I/MainActivity: animateCamera onFinish: Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0

Expected behavior

I expect I get camera position zoom is 10 at onMapChange().
when animateCamera finish, the onMapChange() method should be called.

Actual behavior

But I get camera position zoom is 9.995598601241971.

@tobrun tobrun added the Android Mapbox Maps SDK for Android label Apr 24, 2017
@tobrun tobrun self-assigned this Apr 24, 2017
@tobrun
Copy link
Member

tobrun commented Apr 24, 2017

This is fixed with the upcoming release:

W/CameraPositionActivity: OnCameraChange: Target: LatLng [latitude=37.99998983186134, longitude=-76.99997584760547, altitude=0.0], Zoom:5.998851907191139, Bearing:270.0163754493035, Tilt:39.99272202253179
W/CameraPositionActivity: OnCameraChange: Target: LatLng [latitude=37.999993473755275, longitude=-76.999984498201, altitude=0.0], Zoom:5.999262906362252, Bearing:270.0105132957382, Tilt:39.99532742411636
W/CameraPositionActivity: OnCameraChange: Target: LatLng [latitude=37.99999944898394, longitude=-76.99999869117067, altitude=0.0], Zoom:5.999937737470422, Bearing:270.0008880613398, Tilt:39.9996053060712
W/CameraPositionActivity: OnCameraChange: Target: LatLng [latitude=38.0, longitude=-77.0, altitude=0.0], Zoom:6.0, Bearing:270.0, Tilt:40.0
V/CameraPositionActivity: OnFinish called with Target: LatLng [latitude=38.0, longitude=-77.0, altitude=0.0], Zoom:6.0, Bearing:270.0, Tilt:40.0

Feel free to test out with latest SNAPSHOT:



Add the nightly build of Mapbox as a dependency to your build.gradle file:

repositories {
    mavenCentral()
    maven { url "http://oss.sonatype.org/content/repositories/snapshots/" }
}

dependencies {
    compile ('com.mapbox.mapboxsdk:mapbox-android-sdk:5.1.0-SNAPSHOT@aar') {
        transitive=true
    }
}

@tobrun tobrun closed this as completed Apr 24, 2017
@Larnoo
Copy link
Author

Larnoo commented May 10, 2017

@tobrun I can't find which commit fix this bug.
Can you tell me?
I want to know how fix it.
Thank you!

@tobrun
Copy link
Member

tobrun commented May 10, 2017

@Larnoo it's part of the PR in #8299. Where we are hooking into different map change events to update the camera position.

@Larnoo
Copy link
Author

Larnoo commented May 11, 2017

@tobrun

Steps to trigger behavior

I click a Marker View, and then animate camera position to zoom 10.

I test onMapChange() Api. The log is as follow.

I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.705747646235075, longitude=127.10167590972924, altitude=0.0], Zoom:8.112617154781033, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.705747646235075, longitude=127.10167590972924, altitude=0.0], Zoom:8.112617154781033, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.705747646235075, longitude=127.10167590972924, altitude=0.0], Zoom:8.112617154781033, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.705747646235075, longitude=127.10167590972924, altitude=0.0], Zoom:8.112617154781033, Bearing:-0.0, Tilt:0.0
I: onMarkerClick() called with: marker = [MarkerView [position[LatLng [latitude=37.56653594970703, longitude=126.97796630859375, altitude=0.0]]]], view = [android.widget.RelativeLayout{92e28a3 V.E...... ........ 0,0-177,88}], markerViewAdapter = [com.ckditu.map.mapbox.marker.poi.CityMarkerViewAdapter@a1b27a0]
I: animateToCurrentCity before cameraPosition: Target: LatLng [latitude=37.705747646235075, longitude=127.10167590972924, altitude=0.0], Zoom:8.112617154781033, Bearing:-0.0, Tilt:0.0
I: animateToCurrentCity target cameraPosition: Target: LatLng [latitude=37.566536, longitude=126.977966, altitude=0.0], Zoom:10.0, Bearing:-1.0, Tilt:-1.0
I: onMapChanged() REGION_WILL_CHANGE_ANIMATED cameraPosition=Target: LatLng [latitude=37.705747646235075, longitude=127.10167590972924, altitude=0.0], Zoom:8.112617154781033, Bearing:-0.0, Tilt:0.0
I: onMapChanged() REGION_IS_CHANGING cameraPosition=Target: LatLng [latitude=37.705747646235075, longitude=127.10167590972924, altitude=0.0], Zoom:8.112617154781033, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.705747646235075, longitude=127.10167590972924, altitude=0.0], Zoom:8.112617154781033, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.62585083817682, longitude=127.03064757529353, altitude=0.0], Zoom:8.634168341542836, Bearing:-0.0, Tilt:0.0
I: onMapChanged() REGION_IS_CHANGING cameraPosition=Target: LatLng [latitude=37.62585083817682, longitude=127.03064757529353, altitude=0.0], Zoom:8.634168341542836, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.62585083817682, longitude=127.03064757529353, altitude=0.0], Zoom:8.634168341542836, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.588131456784744, longitude=126.99714154534706, altitude=0.0], Zoom:9.18507603494959, Bearing:-0.0, Tilt:0.0
I: onMapChanged() REGION_IS_CHANGING cameraPosition=Target: LatLng [latitude=37.588131456784744, longitude=126.99714154534706, altitude=0.0], Zoom:9.18507603494959, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.588131456784744, longitude=126.99714154534706, altitude=0.0], Zoom:9.18507603494959, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.57529257371534, longitude=126.985740672352, altitude=0.0], Zoom:9.554289517973862, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_MAP_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.57529257371534, longitude=126.985740672352, altitude=0.0], Zoom:9.554289517973862, Bearing:-0.0, Tilt:0.0
I: onMapChanged() REGION_IS_CHANGING cameraPosition=Target: LatLng [latitude=37.57529257371534, longitude=126.985740672352, altitude=0.0], Zoom:9.554289517973862, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.57529257371534, longitude=126.985740672352, altitude=0.0], Zoom:9.554289517973862, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.57144183726649, longitude=126.98232161814292, altitude=0.0], Zoom:9.717224807516377, Bearing:-0.0, Tilt:0.0
I: onMapChanged() REGION_IS_CHANGING cameraPosition=Target: LatLng [latitude=37.57144183726649, longitude=126.98232161814292, altitude=0.0], Zoom:9.717224807516377, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.57144183726649, longitude=126.98232161814292, altitude=0.0], Zoom:9.717224807516377, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.56916138348566, longitude=126.98029689527141, altitude=0.0], Zoom:9.834923506916706, Bearing:-0.0, Tilt:0.0
I: onMapChanged() REGION_IS_CHANGING cameraPosition=Target: LatLng [latitude=37.56916138348566, longitude=126.98029689527141, altitude=0.0], Zoom:9.834923506916706, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.56916138348566, longitude=126.98029689527141, altitude=0.0], Zoom:9.834923506916706, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.56755087013303, longitude=126.97886702281585, altitude=0.0], Zoom:9.931586602434312, Bearing:-0.0, Tilt:0.0
I: onMapChanged() REGION_IS_CHANGING cameraPosition=Target: LatLng [latitude=37.56755087013303, longitude=126.97886702281585, altitude=0.0], Zoom:9.931586602434312, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.56755087013303, longitude=126.97886702281585, altitude=0.0], Zoom:9.931586602434312, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.566902063240974, longitude=126.97829099714488, altitude=0.0], Zoom:9.974560619015458, Bearing:-0.0, Tilt:0.0
I: onMapChanged() REGION_IS_CHANGING cameraPosition=Target: LatLng [latitude=37.566902063240974, longitude=126.97829099714488, altitude=0.0], Zoom:9.974560619015458, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.566902063240974, longitude=126.97829099714488, altitude=0.0], Zoom:9.974560619015458, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.566685494490656, longitude=126.97809872354765, altitude=0.0], Zoom:9.989501202245902, Bearing:-0.0, Tilt:0.0
I: onMapChanged() REGION_DID_CHANGE_ANIMATED cameraPosition=Target: LatLng [latitude=37.566685494490656, longitude=126.97809872354765, altitude=0.0], Zoom:9.989501202245902, Bearing:-0.0, Tilt:0.0
I: animateCamera onFinish: Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_MAP_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME_FULLY_RENDERED cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0


I confuse the log as follow

I: onMapChanged() REGION_DID_CHANGE_ANIMATED cameraPosition=Target: LatLng [latitude=37.566685494490656, longitude=126.97809872354765, altitude=0.0], Zoom:9.989501202245902, Bearing:-0.0, Tilt:0.0
I: animateCamera onFinish: Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() WILL_START_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0
I: onMapChanged() DID_FINISH_RENDERING_FRAME cameraPosition=Target: LatLng [latitude=37.56653600000002, longitude=126.97796599999992, altitude=0.0], Zoom:10.0, Bearing:-0.0, Tilt:0.0

when onMapChanged() REGION_DID_CHANGE_ANIMATED, but the camera position is not animateCamera onFinish position.

This is a bug?

When onMapChanged() REGION_DID_CHANGE_ANIMATED, I expect I can get the camera position equals the animateCamera onFinish camera position

@Larnoo
Copy link
Author

Larnoo commented May 20, 2017

@tobrun Can you help me?

@tobrun
Copy link
Member

tobrun commented May 20, 2017

@Larnoo have you tried playing around with the new camera api? This API should remove the need to roll your own OnMapChange listener. This feature was requested in #6350 and landed in #8644.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Android Mapbox Maps SDK for Android
Projects
None yet
Development

No branches or pull requests

2 participants