Как преобразовать LatLng в адрес Flutter (как для iOS, так и для Android версии)

0

Вопрос

Я создаю приложение с Flutter, которое использует плагин геокодирования для преобразования местоположения LatLng в адрес.

Вот мой код:

import 'package:geocoding/geocoding.dart';

class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  late String location = "location name";

  Future<String> getAddress() async {
    List<Placemark> placemarks = await placemarkFromCoordinates(
        45.478981,9.207120,
        localeIdentifier: 'it_It');
    return placemarks[0].name.toString();
  }

  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(title: Text("Convert LatLng to Address")),
        body: Center(
          child: Stack(children: [
            Column(
              mainAxisAlignment: MainAxisAlignment.center,
              crossAxisAlignment: CrossAxisAlignment.center,
              children: [
                Text(location),
                ElevatedButton(
                  onPressed: () {
                    getAddress().then((value) => {
                          setState(() {
                            location = value;
                          }),
                          print(value)
                        });
                  },
                  child: const Text('Convert LatLng'),
                ),
              ],
            ),
          ]),
        ));
  }
}

Результат преобразования отличается между версиями iOS и Android, например:

LatLng = 45.478981,9.207120

Результат версии iOS: "Через Алессандро Тадино 21"

Результат версии Android: "46"

Я не понимаю, почему это по-другому, должен ли я использовать другой плагин? Возможно, плагин использует две разные технологии для iOS и Android. Использует ли Android своего рода плагин Google Maps?

dart flutter geocoder geocoding
2021-11-19 15:26:47
1

Лучший ответ

1

Что вам нужно, так это обратное геокодирование

Обратное геокодирование-это процесс преобразования географических координат в читаемый человеком адрес.

Поскольку вам нужны одинаковые выходные данные как на устройствах Android, так и на iOS, я бы посоветовал вам использовать Google Geocoding API

Затем вы можете использовать ключ API с пакетом google_geocoding и получать места по координатам

var googleGeocoding = GoogleGeocoding("API-KEY");
var result = await googleGeocoding.geocoding.getReverse(LatLon(40.714224,-73.961452));
2021-11-19 18:45:20

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................