react-native-camera_edit/windows/RNCamera/GeolocationHelper.cs
2025-07-09 11:33:00 +09:00

73 lines
2.3 KiB
C#

using System;
using Windows.Foundation.Collections;
namespace RNCamera
{
static class GeolocationHelper
{
public static PropertySet GetLatitudeProperties(double latitude)
{
// Latitude and longitude are returned as double precision numbers,
// but we want to convert to degrees/minutes/seconds format.
var latRefText = (latitude >= 0) ? "N" : "S";
var latDeg = Math.Floor(Math.Abs(latitude));
var latMin = Math.Floor((Math.Abs(latitude) - latDeg) * 60);
var latSec = (Math.Abs(latitude) - latDeg - latMin / 60) * 3600;
uint[] latitudeNumerator =
{
(uint)latDeg,
(uint)latMin,
(uint)(latSec * 10000)
};
uint[] denominator =
{
1,
1,
10000
};
return new PropertySet
{
{ "System.GPS.LatitudeRef", latRefText },
{ "System.GPS.LatitudeNumerator", latitudeNumerator },
{ "System.GPS.LatitudeDenominator", denominator },
};
}
public static PropertySet GetLongitudeProperties(double longitude)
{
// Latitude and longitude are returned as double precision numbers,
// but we want to convert to degrees/minutes/seconds format.
var longRefText = (longitude >= 0) ? "E" : "W";
var longDeg = Math.Floor(Math.Abs(longitude));
var longMin = Math.Floor((Math.Abs(longitude) - longDeg) * 60);
var longSec = (Math.Abs(longitude) - longDeg - longMin / 60) * 3600;
uint[] longitudeNumerator =
{
(uint)longDeg,
(uint)longMin,
(uint)(longSec * 10000)
};
uint[] denominator =
{
1,
1,
10000
};
var pset = new PropertySet();
return new PropertySet
{
{ "System.GPS.LongitudeRef", longRefText },
{ "System.GPS.LongitudeNumerator", longitudeNumerator },
{ "System.GPS.LongitudeDenominator", denominator },
};
}
}
}