Ну я тоже с алгоритмами помучился. В итоге упирался в производительность именно JavaScript на браузере... "простые случае" ещё более менее... А вот как только что-то посложнее, например "полигон сетки дорог", вот тут проверка одной точки на 15-30 секунд в даун всё уводило
На JS нужно ограничивать объем обрабатываемых данных. Полпланеты в бразузер не загрузишь