как добавить геотег местоположение камеры изображения

#flutter #imagepicker #geotagging

Вопрос:

как добавить местоположение, когда была сделана фотография, например, когда смартфон хочет сделать снимок, а камера открыта, тогда местоположение уже доступно в средстве выбора изображений, и когда фотография сделана, местоположение становится водяным знаком на фотографии. вот код, который я сделал

 Future pickImage(ImageSource source) async {
try {
  final image = await ImagePicker.pickImage(source: source);
  if(image == null) return;

  final imageTemporary = File(image.path);
  print(imageTemporary);
  
  
   setState(() => this.image = imageTemporary); 
  
} on PlatformException catch(e) {
  print('failed to pick image');
}
 

}

и

 Container(padding: EdgeInsets.all(5),child: Row(children: [
                    Column(
                      children: [
                        image != null ? Image.file(image,
                       width: 50, height: 50, fit: BoxFit.cover,) : Text("Rumah Depan"),
                     Container(
                        margin: const EdgeInsets.fromLTRB(15, 5, 0, 0),
                       child: RaisedButton(
                         
                         padding: EdgeInsets.all(10),
                        onPressed: () {
                          pickImage(ImageSource.camera);
                        },
                       child: Icon(Icons.camera),
                  ),
                     ),
 

Комментарии:

1. вы хотите сохранить сделанное изображение или отобразить только для просмотра?

2. отображение только при просмотре

3. когда камера открыта, функция определения местоположения отображается в средстве выбора изображений, а по завершении съемки изображение, отображаемое при просмотре с указанием местоположения, становится водяным знаком

Ответ №1:

Вам нужно получить координаты и название местоположения из этих координат. Чтобы получить координаты, используйте geolocator. Пример:

 Geolocator.Position position = await Geolocator.Geolocator.getCurrentPosition(
              desiredAccuracy: Geolocator.LocationAccuracy.high);
// where position has lat and lang -> LatLng(position.latitude, position.longitude)
 

И для преобразования координат в название местоположения используйте геокодер. Пример:

 // From coordinates
final coordinates = new Coordinates(1.10, 45.50); // <- here set coordinates
addresses = await Geocoder.local.findAddressesFromCoordinates(coordinates);
first = addresses.first;
print("${first.featureName} : ${first.addressLine}");
 

Чтобы напечатать местоположение как водяной знак на изображении, просто установите Stack его в качестве родительского для изображения:

 Stack(
    children: <Widget>[
        yourImage,
        Center(child: Text("text")),
    ]
)