Sheldhur
чё там может не успеть добавиться? :)
Vitaly
Возможно проблема в том что браузер не успел отрисовать его?
Vitaly
http://taligarsiel.com/Projects/webkitflow.png
Sheldhur
возможно, но у меня ещё 9 таких компонент, у них всё норм почему-то
Pavel b
Подскажите как лучше хешировать координаты из gmaps? Есть большой список объектов и их нужно разложить по координатам. Там много объектов с одинаковыми координатами. Как это реализовать в js?
Oleg
Объект, ключи это координаты одним значением, значения - массивы, хранящие объекты карты
Pavel b
Объект, ключи это координаты одним значением, значения - массивы, хранящие объекты карты
ключ - это координаты. Вот этого не понял. Строкой их запсывать как ключ?
Oleg
{'100.500_300.700': [Obj1, Obj2, Obj3]}
Oleg
Это если задача упаковать
Oleg
А если другая - нужны подробности
Pavel b
{'100.500_300.700': [Obj1, Obj2, Obj3]}
ну понятно. Я в общем так и делал. Вчера только вот на хабре читал в коммнетах про алгоритмы и такой подход залошили. Писали что-то про красно-черные деревья. Вот и спрашиваю. может кто может объяснить как это применить?
Pavel b
https://habrahabr.ru/post/322602/#comment_10093554
Oleg
Если это просто упаковать - мой подход лучше
Oleg
Если там надо расстояния высчитывать, поиск там
Oleg
То уже нет
Oleg
Через мап можно ещё, да
Pavel b
нет, просто хранить и иногда проходиться по списку
Oleg
Вариант с мап даже лучше будет
Oleg
А то я олдскульщик сильно
Pavel b
ну и я так же. Ну как бы расти нужно :)
Anonymous
Хотя стоп.
Anonymous
Не. Мап работать не будет.
Oleg
Да
Oleg
Не будет
Oleg
Потому что ссылки 😄
Anonymous
Там же ==
Oleg
Вот так вот, сбил меня с толку
Anonymous
=))
Oleg
Объекты лучше
Anonymous
А какие координаты? Там у тебя дискретные значения?
Pavel b
ну 6 цифр после запятой
Anonymous
ну 6 цифр после запятой
А если между объектами 3 метра расстояния?
Anonymous
Они же попадут в разные категории.
Pavel b
да, попадут
Anonymous
Тебе нужен механизм агрегации.
Pavel b
тут не очень важно на этом этапе
Anonymous
Лучше сразу работай с БД.
Pavel b
в общем просто хотел проверить не совсем ли ужасно использовать координаты как key в объекте. Спасибо
Pavel b
Лучше сразу работай с БД.
тоже думал про in memory, но пока обощелся объектами
Anonymous
PostgreSQL и монга умеют с гео-координатами.
Pavel b
так мне на front это нужно :)
Pavel b
с PostgreSQL они и приходят
Anonymous
так мне на front это нужно :)
Тогда писать свой механизм агрегации.
Anonymous
Предлагаю определить дискретные диапазоны и выбирать туда объекты.
Pavel b
Предлагаю определить дискретные диапазоны и выбирать туда объекты.
можно подробнее. очень интересно. Или ссылку какую-то если можно
Oleg
Если ещё и группировать что рядом - это соооовсем другая задача
hlomzik
Можно без кластеризации а по-тупому с округлением. Разбивая мир на квадраты по сути
hlomzik
Так а в чём проблема с мапами?
Pavel b
Если ещё и группировать что рядом - это соооовсем другая задача
такая задача возможно будет. Но скорее всего это в posgresql решаться будет. Хотя в целях повышения образованности можем обсудить как сдлеать на front
Anonymous
можно подробнее. очень интересно. Или ссылку какую-то если можно
class Objects { objects: Array<{ lat: number, lon: number, obj: Object, }>; getObj: (lat: number, lon: number) => Object; }
Oleg
Поясните
Массивы передаются по ссылке. Чтобы получить потом элемент - нужно обратится этой ссылкой. Если сделать массив с теми же значениями - это будет другой массив. Необходимость хранения ссылок полностью убивает смысл в мапе в данном случае и в большинстве других - массивы, объекты, да и все не примитивные значения как ключи мапы - имеют очень узкий круг применения.
hlomzik
Pavel b
ну тогда и getObj будет Array<Object>?
Pavel b
А что будет быстрее работать? Ну в плане O(n)?
hlomzik
А, да. Поправил.
Я бы в основном массиве хранил объекты по одному, плюс индекс по координатам. И возврат массива в getObjects. Но зависит от задач.
Anonymous
Да, изначально, нужно хранить начальные данные.
Pavel b
такой подход все еще хорош? :)
Pavel b
{'100.500_300.700': [Obj1, Obj2, Obj3]}
Anonymous
class Objects { objects: Array<{ lat: number, lon: number, indexDiscret: { lat: number, lon: number, }, obj: Object, }>; getObj: (lat: number, lon: number) => Object; addObj: (lat: number, lon: number, obj: Object) => this; }
Pavel b
что такое indexDiscret?
Anonymous
Индекс дискретных значений координат (т.е., в какую категорию попадает тот или иной объект).
Pavel b
угу, ясно. А тогда как добавлять туда object?
Pavel b
ну т.е. нужен удобный механизм добавить объект, посчитать сколько объектов по определенным координатам и получить их
Anonymous
Поправил.
Anonymous
ну т.е. нужен удобный механизм добавить объект, посчитать сколько объектов по определенным координатам и получить их
Метод вычисляет, в какую категорию попадает объект, создаёт объект-обёртку, и пишет её в this.objects.
Oleg
А ещё если объекты далеко то нужно учесть то что земля сфера
Anonymous
Можно и без indexDiscret. Но тогда для поиска потребуется болше вычислений.