PastVu/pastvu

More flexible coordinates parsing / Более гибкий разбор координат в поле ввода

yuriy-zhilovets2 opened this issue · 13 comments

Сейчас поле ввода координат принимает только ввод по шаблону типа 45.99, 33.99, то есть градусы и их доли, разделенные запятой.
Но в других источниках координаты могут храниться и в других форматах

  • быть разделены пробелом или другим символом
  • градусы, минуты, секунды, с возможным указанием вида широты и долготы
  • градусы, минуты и десятичные доли минут.

Примеры:
Википедия: 45°11′45″ с. ш. 33°22′38″ в. д.
shukach.com: N 47° 4.077' E 32° 11.673'

Разбор и конвертация таких координат не представляет особого труда, но облегчил бы жизнь пользователей.

Секунды и минуты могут заменять апострофом и американскими кавычками, может быть два апострофа как секунды. Названия сторон света разные в разных локалях, на PasVu попадались fr, de, uk, it источники с координатами.
Разбор сидит где-то тут

this.geoInputComputed = this.co.geoInputComputed = ko.computed({

Regex для поля координат https://gist.github.com/pjobson/8f44ea79d1852900457bc257a4c9fcd5

Отличная находка, @kabalin ! Это, видимо, сюда

function checkLatLng(geo) {

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

https://www.npmjs.com/package/geo-coordinates-parser
Предлагаю не изобретать велосипед, а воспользоваться готовой библиотекой , которая включает в себя не только упомянутые выше Русланом регулярные выражения, но и еще кучу вариантов, до которых и додуматься-то невозможно.
Если мейнтейнеры дадут добро на использование дополнительной библиотеки, я попробую прикрутить.

Отлично, добавляйте конечно.

https://www.npmjs.com/package/geo-coordinates-parser

Там отличный базовый набор, но библиотека сугубо не международная. Не увидел с.ш. сш в.д вд не говоря об oc.lon. or.lon. или Ost West.

Расширил шаблоны сторон света и угловых мер https://github.com/mkgrgis/geo-coordinates-parser.

Я бы все-таки оставил библиотеку, как есть, но перед проверкой заменял бы выражения типа с.ш. на N
Список выражений держал бы в файле локализации. Тогда можно было бы пользоваться на всех поддерживаемых языках.

но перед проверкой заменял бы выражения типа с.ш. на N

Да можно пока и не заменять.

@yuriy-zhilovets2 , спасибо! Неплохая реализация, не вижу только верхнего регистра всего при входе. Просмотрел? Тогда уж В. Д. и С. Ш. должны быть заглавными. Попозже поднакидаю шаблонов сокращений сторон света и др., если примут #558

Так и не увидел есть ли безразличие к регистру слов. Странно смотрятся верхние регистры ключевых слогов из оригинального кода и с. ш. строго в нижнем регистре. Проверялось ли это?

Так и не увидел есть ли безразличие к регистру слов. Странно смотрятся верхние регистры ключевых слогов из оригинального кода и с. ш. строго в нижнем регистре. Проверялось ли это?

да, там флаг i

да, там флаг i

Спасибо, почему-то упустил этот момент при осмотре.