Leaflet JS เพิ่มรูปร่าง GeoJSON เป็นรูในรูปหลายเหลี่ยม


9

ฉันมีชุดข้อมูลที่มี geojson อยู่แล้ว ฉันสามารถเพิ่มลงในแผนที่ของฉันด้วยรหัสบรรทัดต่อไปนี้

L.geoJson(data.geojson).addTo(map);

และฉันได้รับสิ่งนี้ geojson ลงจุดบนแผนที่

แต่ฉันต้องการบรรลุสิ่งนี้โดยที่พื้นที่โดยรอบถูกปกคลุมและรูปร่างของ geojson ของฉันคือรูที่อยู่ตรงกลาง

geojson เป็นหลุมในแผนที่

ตามเอกสารแผ่นพับ

นอกจากนี้คุณยังสามารถสร้างรูปหลายเหลี่ยมที่มีรูโดยส่งอาร์เรย์อาร์เรย์ของ latlngs ด้วยอาร์เรย์ latlngs แรกที่แทนวงแหวนด้านนอกในขณะที่ส่วนที่เหลือจะแทนหลุมภายใน

ดังนั้นในทางทฤษฎีสิ่งที่ชอบ:

var scotland = [[60,-13],[60,0],[50,4],[50,-13]];
L.Polygon([scotland,coordinatesOfShapeHole].addTo(map);

ปัญหาของฉันคือฟังก์ชั่นนี้ดูเหมือนจะไม่ให้ฉันผ่าน data.geojson หรือ data.geojson.coordinates เป็นพารามิเตอร์ตัวที่สอง (CoordinOfShapeHole);

มีวิธีการแปลง data.geojson ให้เป็นรูปแบบที่ฟังก์ชั่น L.Polygon มีความสุขหรือไม่?

หรือทำสิ่งเดียวกัน แต่กับ L.geoJson

คำตอบ:


7

สิ่งนี้น่าจะใช้ได้ คุณใช้ Leaflet รุ่นใด

ที่นี่มีลักษณะที่นี้ jsFiddle

เป็นสิ่งสำคัญที่คุณต้องใช้อาร์เรย์ให้ถูกต้อง

อาร์เรย์แรกคือวัตถุรูปหลายเหลี่ยม [ที่นี่วงแหวนด้านนอก [ในที่นี่บาง [lat, lon], [,] ปิดวงแหวนรอบนอก] จากนั้นวงแหวนภายใน [ในที่นี่บาง [lat, lon], [,] ปิด วงแหวนด้านใน] ปิดรูปหลายเหลี่ยม]

scotland = L.polygon([[[60,-13],[60,0],[50,4],[50,-13]],
                  [[55.7,-4.5],[56,-4.5],[56,-4],[55.7,-4]]]);
scotland.addTo(map);

1
สวัสดีขอบคุณ. ใช้งานได้ดีถ้าฉันจัดการกับรูปหลายเหลี่ยมตรงไปตรงมา แต่ข้อมูลของฉันอยู่ในรูปแบบ geojson คุณรู้หรือไม่ว่ามีวิธีการแปลง geojson เป็นพิกัดรูปหลายเหลี่ยม หรือใช้มันโดยใช้ L.geoJson
elMarquis

นั่นไม่ควรเป็นปัญหา ฉันแยก jsFiddle ให้ใช้ L.geoJson jsfiddle.net/goldrydigital/xa6vg5zj
Dennis Bauszus

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