загрузить координаты из базы данных, которые находятся в пределах карты

Мне нужно вернуть набор отфильтрованных записей из базы данных, координаты которой находятся в пределах текущих границ карт (map.getBounds ())

Согласно API Google Maps v3, это можно сделать на стороне клиента, используя их api, и функцию «containsLatLng (latlng: GLatLng)», но я хочу сделать эту реализацию на стороне сервера, а затем просто вернуть записи, находящиеся в этих координатах ,

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

Любые предложения о том, как точно это реализовать?

2
@RobHaupt. Именно это и есть проблема в принципе! Я использую полилинию, чтобы увидеть, действительно ли она отбрасывает границы.
добавлено автор byte_slave, источник
Не эксперт по этому вопросу, поэтому я бы скорее прокомментировал, чем ответить, является ли проблема того, что долгота меняется от положительного к отрицательному в Тихоокеанском? Тогда это отбросит границы.
добавлено автор Rob Haupt, источник

1 ответы

В Google Картах конструктор объекта LatLngBounds занимает юго-западные и северо-восточные углы прямоугольных границ.

Зная, что одним из пунктов является юго-западный угол, а не юго-восточный угол, имеет решающее значение для решения проблемы.

Если вы знаете, что один пункт - юго-западный угол, а другой - северо-восточный, сравните долготу двух углов. Ваш алгоритм будет работать следующим образом:

  • Если долгота юго-западного угла меньше , чем долгота северо-восточного угла, чем точка находится в пределах, если она имеет долготу между этими двумя долготами и широтой между две широты углов. (Вероятно, это то, что вы делаете для всего, что происходит в Африке, где это условие истинно, но не в том, что охватывает Тихоокеанский океан.)

  • Если долгота юго-западного угла больше , чем долгота северо-восточного угла, чем ваши границы пересекают 0 долготу, и вам нужно отменить условие: точка находится в пределах, если он имеет долготу, которая не численно между долготой юго-западного угла и долготой северо-восточного угла.

Для простоты и потому, что это почти наверняка верно, я предполагаю, что у вас никогда не будет границ, покрывающих Северный полюс или Южный полюс. (В Google Maps я даже не знаю, есть ли у вас такие ограничения.)

3
добавлено
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot