Натуральная сортировка
Бывают ситуации, когда из базы данных необходимо вывести в выпадающем списке номера домов, причем отсортировать их по возрастанию. Номер дома может содержать не только цифры, но и другие символы, например, 10а или 11/1. А значит это уже не числовой тип, а текстовый. Соответственно и сортировка в SQL-запросе по этому полю будет происходить не как числа, а как текста. Таким образом, вывод значений из базы данных будет выглядеть следующим образом:
1 2 3 4 5 6 7 8 | 1 11 12а 13б 20а 21/1 22 30 |
и так далее…
Как видите, это не тот результат, который мы бы хотели видеть. Так как же сделать, чтобы номера домов в списке были отсортированы не посимвольно? После долгих поисков в рунете, чтения мануалов и собственных исследований, были найдены решения для SQLite и Firebird 2.5 и выше.
SQLite
1 | SELECT NUMBER FROM addresses ORDER BY NUMBER+0 |
Firebird
1 2 | CREATE collation ns_coll FOR utf8 FROM unicode CASE insensitive 'NUMERIC-SORT=1'; ALTER TABLE addresses ADD NUMBER VARCHAR(100) CHARACTER SET utf8 COLLATE ns_coll; |
Надеюсь для кого-то данная статья будет полезной и он сэкономит время
Работа с 2ГИС через реестр
В данной статье будут описаны инструменты работы с 2ГИС через реестр.
Видимость слоев. Начнем с видимости слоев. Бывает необходимость сделать некоторые свои слои, а иногда и чужие, видимыми или не видимыми. К сожалению, с помощью АПИ 2ГИС можно лишь сделать слой невидимым. Хотя в документации есть метод VisibleState, который отвечает за видимость слоя. Об этой проблеме пишут и на форуме.
Решением может являться изменение значений в разделе реестра:
HKEY_CURRENT_USER\Software\DoubleGIS\Grym\Common\LayerVisibility
Раздел содержит список слоев с их тегами. Если необходимо сделать слой видимым нужно изменить значение на “1″ и наоборот – для того, чтобы сделать слой невидимым нужно установить значение “0″. После чего необходимо выполнить метод Invalidate. Таким образом, можно управлять видимостью всех слоев, реализованных во всех плагинах, в т.ч. и в плагине “Дополнительные слои”.
Баг с XMLInfo в API 2ГИС
Интересный мини баг обнаружился при создании модуля 2гис. Если в информации о модуле (в методе IGrymPluginInfo.Get_XMLInfo) указать XML данного вида:
1 2 3 4 5 6 7 8 9 10 11 | <grym_plugin_info> <name>Test Plugin</name> <description></description> <copyright></copyright> <tag>TestPlugin</tag> <requirements> </requirements> <supported_languages> <language>ru</language> </supported_languages> </grym_plugin_info> |
То есть, пропустить строчку указания версии API (<requirement_api>API-1.4</requirement_api>), то 2gis самой свежей версии скажет об ошибке инициализации плагина с сообщением “для использования этого модуля требуется более свежая версия оболочки.”, а не, например, “Не указана версия API” или “Неизвестная версия API”. Что немного может запутать.
Решением этой ошибки является внимательность. При создании модуля проверяйте, правильно ли сформирован XML с информацией, а то придется ждать версии, когда этот мелкий недочет исправят.
——————————————————————————————————————————————————————————————-
Награждение от ООО “ДубльГИС”
В июне 2012 года состоялось знаковое событие для нашей команды разработчиков. Компания ООО “ДубльГИС” наградила меня (Чернявского Александра) дипломом за вклад в развитие АПИ 2ГИС. Нас пригласили в Омский филиал компании ООО “ДубльГИС”, чтобы наградить дипломом, подушкой и пледом с логотипом 2ГИС.
На фото: я с дизайнером, по совместительству с женой )
Знакомство оказалось очень приятным. Для нас провели целую экскурсию по офису компании. С первого взгляда офис показался небольшим, но переходя все в новые и новые комнаты мы поняли, что это только казалось. Мы пообщались по поводу дальнейших целей и планов ООО “ДубльГИС”, рассказали немного о себе. Интервью можно прочитать здесь.
Выражаем благодарность компании ООО “ДубльГИС” за столь теплый прием. Спасибо за подарки и плодотворное общение!