(map: Map)
| 181 | } |
| 182 | |
| 183 | export function getViewState(map: Map): MapViewState & { |
| 184 | repeat: boolean; |
| 185 | padding: { |
| 186 | left: number; |
| 187 | right: number; |
| 188 | top: number; |
| 189 | bottom: number; |
| 190 | }; |
| 191 | } { |
| 192 | const {lng, lat} = map.getCenter(); |
| 193 | |
| 194 | const viewState: MapViewState & { |
| 195 | repeat: boolean; |
| 196 | padding: { |
| 197 | left: number; |
| 198 | right: number; |
| 199 | top: number; |
| 200 | bottom: number; |
| 201 | }; |
| 202 | } = { |
| 203 | // Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian |
| 204 | // https://github.com/visgl/deck.gl/issues/6894 |
| 205 | longitude: ((lng + 540) % 360) - 180, |
| 206 | latitude: lat, |
| 207 | zoom: map.getZoom(), |
| 208 | bearing: map.getBearing(), |
| 209 | pitch: map.getPitch(), |
| 210 | padding: map.getPadding(), |
| 211 | repeat: map.getRenderWorldCopies() |
| 212 | }; |
| 213 | |
| 214 | if (map.getTerrain?.()) { |
| 215 | // When the base map has terrain, we need to target the camera at the terrain surface |
| 216 | centerCameraOnTerrain(map, viewState); |
| 217 | } |
| 218 | |
| 219 | return viewState; |
| 220 | } |
| 221 | |
| 222 | function centerCameraOnTerrain(map: Map, viewState: MapViewState) { |
| 223 | if (map.getFreeCameraOptions) { |
no test coverage detected
searching dependent graphs…