reverseGeocodeLocationCompletionHandler завершается с ошибкой «[TNSDictionaryAdapter координата]: нераспознанный селектор отправлен на экземпляр» - PullRequest
0 голосов
/ 15 января 2020

Я разрабатываю код, который преобразует данное местоположение (широту, долготу) в ближайший адрес улицы, т. Е. В обратный геокод. Я нашел код на этой проблеме , который утверждает, что работает, и с некоторыми изменениями на Android, он делает. Но на iOS я не могу выйти за пределы вызова reverseGeocodeLocationCompletionHandler. В частности, вызов завершается неудачно с сообщением об ошибке «[Координата TNSDictionaryAdapter]: нераспознанный селектор отправлен на экземпляр»

Я создал этот проект Playground , демонстрирующий ошибку. Следует отметить две вещи:

  1. Код ссылки - машинопись; мой проект javascript, поэтому я внес соответствующие изменения
  2. Аргумент местоположения ссылочного кода args.location.ios, но объект местоположения не имеет свойства. ios, поэтому я не вижу, как это могло бы сработать. (Существует эта проблема , отмечающая то же самое, но она так и не была решена.)

Итак, мой вопрос, как я могу успешно вызвать reverseGeocodeLocationCompletionHandler из проекта Nativescript javascript , Поиски в Google после полудня не дали результатов: - (

1 Ответ

0 голосов
/ 15 января 2020

Полагаю, API изменились после комментариев, на которые вы ссылаетесь. Атрибут iOS должен возвращать CLLocation. Последняя версия плагина не предоставляет этот метод, сохраняет его только для внутреннего использования.

Обходной путь - вызвать метод distance(location1, location2), поэтому он создаст собственное местоположение.

  const geolocation = require("nativescript-geolocation");

  ...


  var location = new geolocation.Location();
  location.latitude = 40.7127837;
  location.longitude = -74.00594130000002;

  ...

  let geocoder = new CLGeocoder();
  geolocation.distance(location, location);
  console.log(location.ios);
  geocoder.reverseGeocodeLocationCompletionHandler(
    location.ios,
    (placemarks, error) => {
      if (error) {
        ...
      } else if (placemarks) {
        ...
      }
    });
...