Mongoose $ geoWithin, найти расстояние на мили [дубликат]

Начиная с Alpha 6 вы можете создать следующий файл sass:

@each $breakpoint in map-keys($grid-breakpoints) {
  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

  col, td, th {
    @for $i from 1 through $grid-columns {
        &.col#{$infix}-#{$i} {
          flex: none;
          position: initial;
        }
    }

    @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
      @for $i from 1 through $grid-columns {
        &.col#{$infix}-#{$i} {
          width: 100% / $grid-columns * $i;
        }
      }
    }
  }
}
0
задан Prabjot Singh 11 December 2015 в 14:41
поделиться

3 ответа

Я думаю, ваша проблема в том, что вы ищете в слишком широком радиусе. Согласно документации MongoDB , правильный синтаксис $centerSphere:

db.<name>.find( {
    loc: { $geoWithin: 
     { 
        $centerSphere: [ [ <longitude>, <latitude> ],
        <radius in MILES>/3963.2 ] } 
     }
} )

Теперь вы ищете точки в радиусе 29153.88048637637 миль вокруг вашей точки, и обе точки в этом радиусе вокруг центра, который вы определили.

Надеюсь, это поможет вам:)

1
ответ дан KoenVE 19 August 2018 в 08:52
поделиться
  • 1
    Итак, что мне делать, если я хочу искать в слишком широком радиусе? – Prabjot Singh 14 December 2015 в 09:38
  • 2
    вы ищете в радиусе ~ 29,153 мили = ~ 46,917 км вокруг вашей точки. так как радиус земли составляет всего 6,371 км, логически каждая точка на земле удовлетворит ваше условие $geoWithin. Вы должны подумать о том, чтобы уменьшить свой радиус. – KoenVE 14 December 2015 в 09:42

Только потому, что я несколько раз сталкивался с этим, я хотел бы подробнее ответить на ответ Ашутоша.

Радиус должен быть в радианах, а преобразование основано на радиусе сферы в с которыми вы хотите работать. Предполагая, что вы работаете с Землей в качестве сферы и хотите, чтобы ваш $geoWithin находился в метрах, тогда вы установите для поля radius значение meters/(6371*1000) или расстояние, которое вы хотите разделить радиусом земли в

Этот список должен помочь:

  • Метры: расстояние в meters/6371000 (средний радиус земли в метрах)
  • Километры: расстояние в km/6371
  • Мили: расстояние в miles/3959
  • Ноги: расстояние в feet/20903520
0
ответ дан Alan T. 19 August 2018 в 08:52
поделиться

Если вы хотите в будущем спросить, связанную с $geoWithin или $centerSphere, тогда укажите свою структуру поля, как это: -

"location" : {
        "lng" : 77.15319738236303,
        "lat" : 28.434568229025803
    },
"redius" : 120

, а затем выполните запрос типа: -

db.collection.find( {location: { $geoWithin: { $centerSphere: [ [ lat, lng ], radius/3963.2] } }} )

2
ответ дан Ashutosh 19 August 2018 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: