Я создал простое Android-приложение, которое делает фотографию и сохраняет данные GPS устройства в exif-тегах для jpg-файла. Следующий код показывает этот процесс (я знаю, что это беспорядочно)
Android.Locations.Location loc = await client.GetLastLocationAsync();
ByteBuffer buffer = mImage.GetPlanes()[0].Buffer;
byte[] bytes = new byte[buffer.Remaining()];
buffer.Get(bytes);
using (var output = new FileOutputStream(mFile))
{
try
{
output.Write(bytes);
output.Flush();
ExifInterface exif = new ExifInterface(mFile.AbsolutePath);
string[] degMinSec = Location.Convert(loc.Latitude, Format.Seconds).Split(':');
string dms = degMinSec[0] + "/1," + degMinSec[1] + "/1" + degMinSec[2] + "/1000";
string[] degMinSec1 = Location.Convert(loc.Longitude, Format.Seconds).Split(':');
string dms1 = degMinSec1[0] + "/1," + degMinSec1[1] + "/1" + degMinSec1[2] + "/1000";
exif.SetAttribute(ExifInterface.TagGpsLatitude, dms);
exif.SetAttribute(ExifInterface.TagGpsLatitudeRef, loc.Latitude < 0?"S":"N");
exif.SetAttribute(ExifInterface.TagGpsLongitude, dms1);
exif.SetAttribute(ExifInterface.TagGpsLongitudeRef, loc.Longitude < 0 ? "W" : "E");
exif.SaveAttributes();
}
...
Итак, теперь к проблеме: когда я делаю снимок и отлаживаю переменную loc, она выглядит так:
как видите, широта 48.4080605, а долгота 15.6257273.
когда я отлаживаю преобразованные значения dms и dms1, они показывают следующие значения:
dms представляет широту и имеет значение 48° 24' 29,0178'', dms1 представляет долготу и имеет значение 15° 37' 32,61828''.
когда я смотрю на exif-данные изображений в metapicz.com, он показывает следующие значения:
может кто-нибудь объяснить мне, что происходит и что я делаю неправильно? я не могу понять, почему он показывает другое местоположение, чем должно
when i look at the pictures exif-data in metapicz.com
Неправильно. Вы должны сами прочитать эти значения exif сразу после того, как вставите их. И сравните. - person greenapps   schedule 23.08.2018string dms = degMinSec[0] + "/1," + degMinSec[1] + "/1" + degMinSec[2] + "/1000";
Разве это не должно бытьstring dms = degMinSec[0] + "/1," + degMinSec[1] + "/1," + degMinSec[2] + "/1000";
? - person greenapps   schedule 23.08.2018