如何使用Xamarin表单从Image属性读取地理坐标?

时间:2019-07-24 13:32:54

标签: xamarin xamarin.forms xamarin.android xamarin.ios

我有一幅经度和纬度坐标的图像,有人可以告诉我如何获取吗?我尝试过

 if (CrossMedia.Current.IsPickPhotoSupported)
           {
               MediaFile photoPicked = await CrossMedia.Current.PickPhotoAsync();
               if (photoPicked != null)
               {
                   //await DisplayAlert("Photo Location", photoPicked.Path, "OK");
                   //path = photoPicked.Path;
                   using (Stream streamPic = photoPicked.GetStream())
                   {
                       var picInfo = ExifReader.ReadJpeg(streamPic);
                       ExifOrientation orientation = picInfo.Orientation;
                       //MainImage123.Source = ImageSource.FromStream(() => photoPicked.GetStream());
                       latitude = picInfo.GpsLatitude;
                       longitude = picInfo.GpsLongitude;
                       var filepath = photoPicked.AlbumPath;
                       var filepath1 = photoPicked.Path;
                   }
               }
           }

当我选择照片并尝试获取其坐标时,它可以工作,但是我必须从图库中拍摄多张照片并找到其坐标。 有谁知道如何读取图像的地理坐标吗?请帮助我。

2 个答案:

答案 0 :(得分:1)

您可以使用ExifLib.PCL Nuget包通过查看“代码示例”来读取图像元数据,我认为您正在使用Plugin.Media来从图库中获取图像/获取图像。从您的应用中拍摄照片时,请务必使用SaveMetaData = true。 将 SaveMetaData 设置为 true 后,使用 ExifLib 获取元数据,如下所示:

        MediaFile photo;

        using (Stream streamPic = photo.GetStream())
        {
            var picInfo = ExifReader.ReadJpeg(streamPic);
            double lat = picInfo.GpsLatitude;
            double lon = picInfo.GpsLongitude;
        }

此外,作为,您还可以获取有关照片的更多信息(拍摄日期,作者,尺寸等)。

更新:

再次阅读后,看来问题是您无法从图库中选择多张图像,并且无法从照片中获取经纬度。目前,Plugin.Media不支持多选。

答案 1 :(得分:0)

但是您的问题尚不清楚-我想您正在尝试使其与多个图像一起使用。您如何能够一起选择多张图像?

插件“ CrossMedia”不支持拾取多个图像。

您的解决方案需要完成大量工作才能一次拾取多张图像。因此,请在此处按照这个不错的分步教程进行操作:

https://xamgirl.com/select-multiple-images-from-gallery-in-xamarin-forms/

有了上面的内容,您将能够立即获得您需要的所有图像。 获得List后,您所需要做的就是遍历这些图像并调用您现有的代码。