В OpenLayers я использую ol.style.Text, чтобы добавить текстовую метку к полигонам федеральных штатов. Государства имеют имена разной длины, а также многоугольники разных размеров. Это выглядит следующим образом:Только печатать ol.style.Text для полигона, если текстовая метка находится внутри его геометрии
Можно ли печатать только текст маркера, если он помещается внутри своего многоугольника (например, после масштабирования)? Например, в приведенном выше примере Гессен, Тюринген, Саксония и Бавария будут напечатаны, но Rheinland-Pfalz, Saarland и Baden-Württemberg будут опущены, потому что текст выходит за рамки геометрии своей функции ...
Я знаю, что могу задайте font
property of ol.style.Text
до определенного размера, основываясь на resolution
, но это не поможет здесь, так как текст иногда будет перекрывать границы ...
Thx! Но как мне получить ширину экстента в горизонтальном выравнивании, где текст должен быть напечатан? Сначала мне нужно знать, где печатается текст (не всегда средний). Как? А затем 2-ая протяженность многоугольника на этой очень горизонтальной линии? Опять как? – nachtigall
Точка метки для многоугольника - это точка, которую вы получаете с помощью 'ol.geom.Polygon # getInteriorPoint()'. Если вы посмотрите исходный код 'ol.geom.flat.interiorpoint.linearRings', вы увидите переменную с именем' maxSegmentLength'. Это ширина, которую вы можете использовать для маркировки. – ahocevar
Спасибо! Попробуем это (и если у меня что-то работает, а затем отправьте ответ здесь) – nachtigall