Страница 1 из 1

Leaflet и SVG иконка маркера

Добавлено: 22 май 2018, 08:41
Uhvarkin
Добрый день! Такая проблема: в Leaflet добавляю маркеры из базы данных и устанавливаю им иконку SVG.

Код: Выделить всё

var icon= "svg/Ships/" + feature.properties.svg +"_W.svg";
var shipIcon = L.icon({
	iconUrl: icon,
	iconSize: [140, 140],
	shadowSize: [15, 15],
	iconAnchor: [5, 5],
	popupAnchor: [0, -25]
	});
return L.marker(latlng, {
	icon: shipIcon,
	title: feature.properties.name,
	rotationAngle: feature.properties.otnkurs
	});
SVG немного не стандартный, большой контейнер, по середине маленькая иконка.
Изображение
Примерно таких размеров SVG, выделил черным квадратом.
Изображение
До этого делал все это через GeoServer, и работало как нужно.
Изображение
Подскажите, пожалуйста, как можно решить данную проблему? Во вложения положил пример моего svg

Re: Leaflet и SVG иконка маркера

Добавлено: 22 май 2018, 10:56
ericsson
Начать с того, что научиться пользоваться Inkscape. Из знаний об Inkscape вам понадобится:
- чем отличается сохранение в Inkscape SVG от просто SVG (ваши файлы - Inkscape SVG)
- как изменить размер страницы SVG-файла до размеров собственно изображения, которое в нем содержится (через Document properties)

Ну и для самообразования, ознакомьтесь с https://www.sarasoueidan.com/blog/svg-c ... e-systems/

А вообще, я не очень понимаю ситуацию: вы уже знаете, что у вашего SVG есть лишние поля (то есть корень проблемы вам известен), так при чем тут Leaflet и GIS вообще - это вопрос по векторной графике.

Re: Leaflet и SVG иконка маркера

Добавлено: 22 май 2018, 11:57
Uhvarkin
ericsson писал(а):
22 май 2018, 10:56
Начать с того, что научиться пользоваться Inkscape. Из знаний об Inkscape вам понадобится:
- чем отличается сохранение в Inkscape SVG от просто SVG (ваши файлы - Inkscape SVG)
- как изменить размер страницы SVG-файла до размеров собственно изображения, которое в нем содержится (через Document properties)
Правильно ли я понимаю, что придется отредактировать все SVG ?

Re: Leaflet и SVG иконка маркера

Добавлено: 22 май 2018, 21:51
ericsson
Теоретически, если у вас для маркеров используются только эти SVG, можно попытаться переписать стили для них, но это совершенно неправильный подход - нужно чинить то, что сломано/неправильно (SVG), а не то, что работает правильно.

Ну и сколько у вас этих иконок? На редактирование одной нужно меньше минуты.

Re: Leaflet и SVG иконка маркера

Добавлено: 23 май 2018, 12:12
Uhvarkin
ericsson писал(а):
22 май 2018, 21:51
нужно чинить то, что сломано/неправильно (SVG)
их порядка 300 штук. Чинить с помощью viewBox ?

Re: Leaflet и SVG иконка маркера

Добавлено: 23 май 2018, 12:18
trir
:shock:
sodipodi:docname="13147200400903100100000100000000_W.svg
https://ru.wikipedia.org/wiki/Sodipodi

Re: Leaflet и SVG иконка маркера

Добавлено: 23 май 2018, 12:21
trir
а разве не для этого нужны iconAnchor и popupAnchor?

Re: Leaflet и SVG иконка маркера

Добавлено: 23 май 2018, 12:21
rhot
Uhvarkin писал(а):
23 май 2018, 12:12
Чинить с помощью viewBox
ImageMagick

Re: Leaflet и SVG иконка маркера

Добавлено: 23 май 2018, 12:56
Ariki
Inkscape же скриптуется через командную строку

Код: Выделить всё

inkscape --without-gui --export-area-drawing --export-plain-svg=OUTPUT_FILENAME.svg INPUT_FILENAME.svg