ใบปลิว: วิธีการวาดเส้นโค้ง?


17

ดังนั้นฉันจึงพยายามวาดเส้นโค้งในแอปพลิเคชันของฉันซึ่งใช้แผนที่ของ Leaflet

เท่าที่ฉันรู้ Leaflet ไม่สนับสนุนการวาดเส้นโค้งในขณะนี้ดังนั้นคำถามของฉันคือเพิ่มเติมเกี่ยวกับวิธีรับ funtionality เส้นโค้งที่ดีที่สุดในนั้น

ปัญหาทำยากขึ้นเพราะรหัสของฉันจะต้องเข้ากันได้กับ IE-8 ซึ่งหมายความว่า SVG แท้นั้นไม่มีวิธีแก้ไข (แผ่นพับจริงจะถอยกลับไปที่ VML หากตรวจพบว่าไม่มีการสนับสนุน SVG อยู่ ... )

ดังนั้นสิ่งหนึ่งที่เป็นไปได้คือให้ฉันเขียนโค้ดส่วนขยายของแผ่นพับบางส่วนตาม SVG โดยมีทางเลือกสำรองถึง VML นี่จะเป็นงานที่ต้องทำมากมาย : /

ใครบ้างที่มีข้อเสนอที่ดีกว่า?


เพิ่งรู้ว่าฉันไม่เคยยอมรับคำตอบ ฉันเลือกหนึ่งรายการโดย @dobrych เพราะRaphaëlดูเหมือนจะเป็นห้องสมุดที่ดีมากและให้ทางเลือก VML ที่น่าพอใจ ฉันอาจมองเข้าไปใน arc.js เช่นกัน
fgysin คืนสถานะโมนิก้า

คำตอบ:


5

เมื่อพิจารณาถึงความต้องการการสนับสนุน IE8 เราไม่มีตัวเลือกมากมายในตาราง ฉันจำได้เพียง SVG lib เดียวที่มี VML fallback - 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 สำหรับเวคเตอร์ใด ๆ ในเว็บ GIS



3

การสร้างเลเยอร์ที่กำหนดเองของคุณเองอาจเป็นทางออกหนึ่งในการแก้ไขปัญหานั้น แต่ใช่ฉันเห็นด้วยว่ามันจะเป็นงานที่หนักมาก อีกทางเลือกหนึ่งคือการวาดเส้นโค้งของคุณเอง (bezier, b-spline หรืออะไรทำนองนั้น) ตามพิกัดทางภูมิศาสตร์ ฉันไม่รู้ว่ามันดูดี แต่ฉันสามารถจินตนาการได้ว่าผลลัพธ์จะไม่เลวร้ายเกินไปและมันก็สำเร็จได้เร็วกว่ามาก มีสคริปต์ JS มากมายสำหรับอัลกอริทึมดังกล่าว มันอาจจะคุ้มค่าที่จะนำเสนอข้อมูลของคุณให้เป็น UTM สำหรับการคำนวณ

หากคุณพบว่า กรุณาแจ้งให้เราทราบ ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.