From dbe2e9494b7de48decb027c3bee06cda22f2d931 Mon Sep 17 00:00:00 2001 From: masashi Date: Tue, 1 Sep 2026 11:39:41 +0900 Subject: [PATCH] Make bearing a clockwise map rotation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit bearing を「値を増やすと地図が時計回りに回る」向きに統一し、ネイティブ SDK との変換をコアの CameraBearing に集約する。 --- .../com/mapconductor/googlemaps/MapCameraPosition.kt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/mapconductor/googlemaps/MapCameraPosition.kt b/src/main/java/com/mapconductor/googlemaps/MapCameraPosition.kt index 2f867cc..c7b2dc2 100644 --- a/src/main/java/com/mapconductor/googlemaps/MapCameraPosition.kt +++ b/src/main/java/com/mapconductor/googlemaps/MapCameraPosition.kt @@ -2,6 +2,7 @@ package com.mapconductor.googlemaps import com.google.android.gms.maps.model.CameraPosition import com.mapconductor.core.features.GeoPoint +import com.mapconductor.core.map.CameraBearing import com.mapconductor.core.map.MapCameraPosition import com.mapconductor.core.map.MapCameraPositionInterface import com.mapconductor.core.map.MapPaddings @@ -22,7 +23,7 @@ fun MapCameraPosition.toCameraPosition(): CameraPosition { .target(GeoPoint.from(position).toLatLng()) .zoom(zoom.toFloat()) .tilt(tilt.coerceIn(0.0, 60.0).toFloat()) - .bearing(bearing.toFloat()) + .bearing(CameraBearing.toNativeHeading(bearing).toFloat()) .build() } else { // tilt < 0: 水平線より abs(tilt) 度上方を向く(仰角ビュー) @@ -33,7 +34,7 @@ fun MapCameraPosition.toCameraPosition(): CameraPosition { val tiltAbsRad = Math.toRadians(tiltAbsDeg) val altitude = converter.zoomLevelToAltitude(zoom, position.latitude, 0.0) val distanceForward = altitude * tan(tiltAbsRad) - val target = Spherical.computeOffset(position, distanceForward, bearing) + val target = Spherical.computeOffset(position, distanceForward, CameraBearing.toNativeHeading(bearing)) val adjustedZoom = converter.altitudeToZoomLevel(altitude / cos(tiltAbsRad), target.latitude, 0.0) return CameraPosition @@ -41,7 +42,7 @@ fun MapCameraPosition.toCameraPosition(): CameraPosition { .target(target.toLatLng()) .zoom(adjustedZoom.toFloat()) .tilt(tiltAbsDeg.toFloat()) - .bearing(bearing.toFloat()) + .bearing(CameraBearing.toNativeHeading(bearing).toFloat()) .build() } } @@ -71,7 +72,7 @@ fun CameraPosition.toMapCameraPosition(paddings: MapPaddingsInterface = MapPaddi return MapCameraPosition( position = position, zoom = zoom.toDouble(), - bearing = bearing.toDouble(), + bearing = CameraBearing.bearingFromNativeHeading(bearing.toDouble()), tilt = tilt.toDouble(), paddings = paddings, visibleRegion = null,