mapbox / mapbox/mapbox-maps-flutter

CameraViewportState initial position is jumping

Offen
#820 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Dart
Sterne
380
Forks
204
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

When initially loading a map that uses `CameraViewportState`, the map is briefly centering to a different center than configured.
This behavior is different to when using `CameraOptions`, where the `onCameraChangeListener` is also fired twice, but both with the same center.

```
MapWidget(
key: ValueKey("mapWidget"),
viewport: CameraViewportState(
center: Point(coordinates: Position(-117.918976, 33.812092)),
bearing: currentCity.bearing,
pitch: 0,
zoom: 18),
onCameraChangeListener: (cameraChangedEventData) =>
print(cameraChangedEventData.cameraState.center.toJson()),
),
```

Output for `onCameraChangeListener`:
```
{type: Point, bbox: null, coordinates: [-9.999999999999972, 29.999999999999964]}
{type: Point, bbox: null, coordinates: [-117.918976, 33.812092000000014]}
```

When configuring both, `viewport ` and `cameraOptions`, it first centers to the position from `cameraOptions` and then to the position of `viewport`. Maybe there is some unwanted default/calculation when using `viewport` alone?

```
MapWidget(
key: ValueKey("mapWidget"),
viewport: CameraViewportState(
center: Point(coordinates: Position(-117.918976, 33.812092)),
bearing: currentCity.bearing,
pitch: 0,
zoom: 18),
cameraOptions: CameraOptions(
center: Point(coordinates: Position(-100.918976, 33.812092)),
zoom: 18,
),
onCameraChangeListener: (cameraChangedEventData) =>
print(cameraChangedEventData.cameraState.center.toJson()),
),
```
Output for `onCameraChangeListener`:
```
{type: Point, bbox: null, coordinates: [-100.918976, 33.812092000000035]}
{type: Point, bbox: null, coordinates: [-117.918976, 33.812092000000014]}
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, das anfängliche Laden mit MapWidget unter Verwendung von CameraViewportState und onCameraChangeListener zu reproduzieren, und vergleiche es dann mit CameraOptions und der im Bericht gezeigten kombinierten Konfiguration. Als erledigt gilt die Aufgabe, wenn die anfängliche Kamera nicht kurzzeitig zu einem unbeabsichtigten Zentrum springt und die gemeldeten Kameraänderungsereignisse konsistente Zentren haben.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
dart, flutter
Bereich
mobile-dev
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.