flutter - устанавливает максимальный радиус при отображении расстояния списка - PullRequest
1 голос
/ 07 марта 2019

Я занимаюсь разработкой ближайшего места для подачи блюд. Мне удалось отобразить его в зависимости от местоположения, ближайшего к пользователю, используя этот плагин great_circle_distance

Я хочу знать, как установить максимальный радиус? ех. <30 км </p>

Вот мой код:

 _foodByCategories.sort((a, b) {
      var distance1 = new GreatCircleDistance.fromDegrees(
          latitude1:
              model.userLocation == null ? 0.0 : model.userLocation["latitude"],
          longitude1: model.userLocation == null
              ? 0.0
              : model.userLocation["longitude"],
          latitude2: a.lat,
          longitude2: a.long);
      double totaldistance1 = distance1.haversineDistance();

      var distance2 = new GreatCircleDistance.fromDegrees(
          latitude1:
              model.userLocation == null ? 0.0 : model.userLocation["latitude"],
          longitude1: model.userLocation == null
              ? 0.0
              : model.userLocation["longitude"],
          latitude2: b.lat,
          longitude2: b.long);
      double totaldistance2 = distance2.haversineDistance();
      return (totaldistance1 - totaldistance2).toInt();
    });

Любой ответ будет оценен.

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

Если я правильно понял ваш вопрос

_foodByCategories.where((a) {
  var distance = new GreatCircleDistance.fromDegrees(latitude1: double.parse(widget.lat), longitude1: double.parse(widget.lng), latitude2: double.parse(a.lat), longitude2: double.parse(a.lng));
  var totaldistance = distance.haversineDistance().toStringAsFixed(2);
  double distanceDouble1 = double.parse(totaldistance);
  return distance <= 30000; // or something like that
}).sort ... // and your sorting code
0 голосов
/ 07 марта 2019

Я не вижу способа сделать это в пакете, который вы используете.Вы можете предложить разработчику добавить эту функцию в?

В качестве альтернативы, вы получаете total distance в своем коде, так что вы можете просто сделать if statement, чтобы проверить, больше ли общее расстояние, чем вашеустановить максимальный радиус.

...