Próbuję narysować etykietę na wieloboku pliku svg. Problem, z jakim się borykam, polega na przybliżeniu środka tego wielokąta w celu umieszczenia etykiety, ponieważ współrzędne ścieżki są w formacie SVG i muszą zostać przeanalizowane. Czy istnieje łatwiejszy sposób określenia środka wieloboku svg (może ktoś może wskazać bibliotekę javascript lub fragment)? Używam biblioteki javascript Raphael do manipulowania svg, ale wydaje się, że nie wykracza poza standardową funkcjonalność svg.Umieść etykietę w "środku" ścieżki SVG
Odpowiedz
Najprostszą rzeczą, którą możesz spróbować zrobić, to obliczyć centrum, biorąc średnią ze wszystkich punktów w wielokącie. Powinien działać dla wszystkich, ale najbardziej nieregularnych wielokątów. Użyłem tego samego algorytmu do dobrego efektu w moich programach.
Powodzenia.
można spróbować następujące przybliżenie do zrobienia czegoś podobnego do sugestii wielokąta, na podstawie metod SVG DOM:
var totalPathLength = pathelm.getTotalLength();
var step = totalPathLength/100;
for(var dist=0; dist < totalPathLength; dist+=step)
{
var pt = pathelm.getPointAtLength(dist);
addToAverage(pt.x, pt.y);
}
Myślę, że najprostszym sposobem jest użycie środku element ścieżki za boundingbox (pathelm. getBBox()), co jest prostsze niż sugestia wielokąta.
PS: 'var bbox = p.getBBox(); var x = Math.floor (bbox.x + bbox.width/2.0); var y = Math.floor (bbox.y + bbox.height/2.0); 'zrobiłem dla mnie trik, thx. – lwe
Dzięki @Iwe! To było o wiele prostsze, niż mogłem sobie wyobrazić :) – Viet
@ Komentarz Iwe zasługuje na osobną odpowiedź. Jest to prostsze, inne podejście z różnymi zaletami i wadami. Oto wersja demonstracyjna [** JSBIN obydwu z wykorzystaniem kształtów krajów Wietnamu i Kanady **] (http://jsbin.com/orAzoFI/3/edit) pokazująca pewne kluczowe punkty i różnice: że żadna z metod nie gwarantuje, że centrum znajdzie się w środku kształt, a metoda Erika ściąga środek w kierunku części ścieżki, które są bardziej spękane/złożone/mają większy względny obwód. – user568458
Wstawianie znacznika tekstu wewnątrz SVG i położeniu go poprzez obliczenie szerokości i wysokosc
<svg width="447pt" height="559pt" viewBox="0 0 894 1118" version="1.1" xmlns="http://www.w3.org/2000/svg">
............
............
<text x="450" y="300" font-family="Verdana" font-size="15" fill="red" >
Text To Show
</text>
</svg>
- 1. Umieść pole wprowadzania w środku div
- 2. Align SVG na środku ekranu
- 3. Tworzenie ścieżki w rzutce: svg
- 4. pozycji ścieżki Svg
- 5. Przycisk Android Umieść obraz w środku i tekst na dole
- 6. Jak wyśrodkować etykietę Bootstrap na SVG?
- 7. Graphviz: Umieść etykietę brzeg po drugiej stronie (II)
- 8. Jak przekonwertować tekst na ścieżki SVG?
- 9. Polecenia ścieżki SVG "s" i "t"
- 10. Gradient SVG dla idealnie poziomej ścieżki
- 11. Dodaj zajęcia do elementu ścieżki SVG
- 12. animacja ścieżki SVG przy zmianie wartości
- 13. Wypełnij element ścieżki SVG obrazem tła
- 14. Jak wygenerować zapis ścieżki SVG dla tekstu
- 15. Jak dodać cień do elementu ścieżki SVG?
- 16. Jak wyświetlić etykietę programu ładującego z obiektem SVG?
- 17. Zmiana koloru wypełnienia ścieżki SVG danych-URI w pseudo elementu
- 18. W Google Map V3, jak umieścić etykietę w środku i nad wielokątem?
- 19. Umieszczanie etykiet w środku węzłów w d3.js
- 20. Narysuj ścieżkę w płótnie z danymi trasy SVG (ścieżki SVG do ścieżek płótnie)
- 21. Umieść obraz pośrodku komórki za pomocą migradoc
- 22. Korzystając z SVG, można dodać tekst do środka ścieżki i wyrównać go w poziomie?
- 23. matplotlib/pandy: umieść etykietę linii wzdłuż kreślonych linii na wykresie szeregu czasowego
- 24. Div poziomo w środku i w pionie w środku
- 25. Wkhtmltopdf nie trafia do ścieżki drukowania SVG (highchart)
- 26. Czy mogę zmienić kolor wypełnienia ścieżki svg za pomocą CSS?
- 27. Jak zabezpieczyć znacznik SVG (strzałka), aby odziedziczyć szerokość obrysu ścieżki?
- 28. Programowo konwertuj kształty SVG na ścieżki (lineto, moveto)
- 29. Ścieżki SVG wykrywają zachodzące na siebie lub zamknięte kształty.
- 30. Dodaj etykietę w UIAlertController?
Niestety, nie za jasno frazowania moje pytanie. Problem polega raczej na tym, jak uzyskać współrzędne z d-atrybutu ścieżki, który jest w tym formacie <ścieżka d = "M 100 100 L 300 100 L 200 300 z" wypełnienie = "czerwony" skok = "niebieski" skok- width = "3" /> w celu obliczenia centrum lub znalezienia biblioteki javascript, która robi to beze mnie, parsując atrybut zgodnie ze specyfikacją svg. – sol
Pierwszym problemem, który należy rozwiązać, jest najpierw konwersja svg do wieloboku. Szukałem kodu do konwersji ścieżek svg na wielokątów, ale nie mogłem go znaleźć. Być może będzie musiał dig-up na kody źródłowe svg projektów – ivanceras