Листовка: как рисовать изогнутые линии?

17

Итак, я пытаюсь нарисовать изогнутые линии в своем приложении, основанном на карте Leaflet.

Насколько я знаю, Leaflet в настоящее время не поддерживает рисование изогнутых линий, поэтому мой вопрос на самом деле больше о том, как наилучшим образом реализовать некоторую функциональность изогнутых линий.

Проблема усложняется, потому что мой код должен быть совместимым с IE-8, что означает, что чистый SVG не является решением. (Leaflet на самом деле делает откат к VML, если обнаруживает, что поддержка SVG отсутствует ...)

Таким образом, одна возможность была бы для меня написать некоторый код расширения листовки, основанный на SVG с его собственным отступлением к VML. Это было бы чертовски много работы. : /

У кого-нибудь есть лучшее предложение?

фгысин восстановить монику
источник
Только сейчас понял, что никогда не принимал ответ. Я выбрал один от @dobrych, потому что Raphaël, кажется, очень хорошая библиотека и обеспечивает хороший запасной вариант VML. Я мог бы также заглянуть в arc.js.
Fgysin восстановить Монику

Ответы:

5

Учитывая требование поддержки IE8, у нас не так много вариантов. Я могу вспомнить только одну SVG-библиотеку, у которой есть запасной вариант VML - Raphaël.js. Поэтому вы можете попробовать эту реализацию плагина уровня Raphaël для Leaflet. https://github.com/dynmeth/RaphaelLayer Я сам не пробовал подключать плагин, но успешно использовал Raphaël. Надеюсь, ты сможешь найти применение.

Вот рабочий пример (изображение ссылки на демо) http://visualizingurbanfutures.com/2012/09/06/maps-with-raphael-js/

Если бы не требование IE8, я бы использовал D3 для любых векторов в веб-ГИС.

dobrych
источник
8

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

neogeomat
источник
Arc.js рисует большие круговые маршруты, а не произвольные кривые.
Марк Пфистер
3

Создание собственного пользовательского слоя, вероятно, является одним из решений этой проблемы. Но да, я согласен, что это будет чертовски много работы. Другой вариант - нарисовать ваши собственные кривые (безье, b-сплайн или что-то в этом роде) на основе географических координат. Я понятия не имею, выглядит ли это хорошо, но я мог предположить, что результат не будет слишком плохим, и он определенно будет достигнут намного быстрее. Существует множество JS-скриптов для таких алгоритмов. Возможно, стоит подумать о том, чтобы спроецировать ваши данные в нечто вроде UTM для расчета.

Если вы найдете что-л. пожалуйста, дайте нам знать ...

Телохранитель
источник