วิธีเพิ่มคุณสมบัติเวกเตอร์ลงในแผนที่ OpenLayers 3 (พร้อมรูปภาพ)

สารบัญ:

วิธีเพิ่มคุณสมบัติเวกเตอร์ลงในแผนที่ OpenLayers 3 (พร้อมรูปภาพ)
วิธีเพิ่มคุณสมบัติเวกเตอร์ลงในแผนที่ OpenLayers 3 (พร้อมรูปภาพ)

วีดีโอ: วิธีเพิ่มคุณสมบัติเวกเตอร์ลงในแผนที่ OpenLayers 3 (พร้อมรูปภาพ)

วีดีโอ: วิธีเพิ่มคุณสมบัติเวกเตอร์ลงในแผนที่ OpenLayers 3 (พร้อมรูปภาพ)
วีดีโอ: เทคนิคลับที่ Apple ไม่เคยบอก | คลิกเดียว! ออกจากโหมดกู้คืน ง่าย ดี ฟรี ด้วย 3uTools 2024, เมษายน
Anonim

OpenLayers เป็นเครื่องมือ JavaScript ที่ทรงพลังที่ช่วยให้เราสร้างและแสดงแผนที่ทุกประเภทบนเว็บไซต์ บทความนี้จะแนะนำคุณในการเพิ่มจุดและคุณลักษณะสตริงของเส้น จากนั้นแปลงการฉายภาพเพื่อใช้พิกัด จากนั้นเพิ่มสีด้วยการตั้งค่าสไตล์ของเลเยอร์

โปรดทราบว่าคุณต้องติดตั้งแผนที่ OpenLayers ที่ใช้งานได้ในหน้าเว็บเพื่อติดตามบทความนี้ หากคุณไม่มี โปรดดูวิธีสร้างแผนที่โดยใช้ OpenLayers 3

ขั้นตอน

ส่วนที่ 1 จาก 3: การเพิ่มคุณสมบัติจุดและสตริงบรรทัด

ขั้นตอนที่ 1 สร้างคุณสมบัติจุด

เพียงคัดลอกโค้ดบรรทัดต่อไปนี้ลงใน your

ธาตุ:

var point_feature = ol. Feature ใหม่ ({ });

ขั้นตอนที่ 2 ตั้งค่าเรขาคณิตของจุด

หากต้องการบอก OpenLayers ว่าจะวางจุดใด คุณต้องสร้างรูปทรงเรขาคณิตและกำหนดชุดพิกัดซึ่งเป็นอาร์เรย์ในรูปแบบของ [ลองจิจูด (E-W) ละติจูด (N-S)] รหัสต่อไปนี้สร้างสิ่งนี้และตั้งค่าเป็นเรขาคณิตของจุด:

var point_geom = ใหม่ ol.geom. Point([20, 20]); point_feature.setGeometry(point_geom);

ขั้นตอนที่ 3 สร้างคุณลักษณะสตริงบรรทัด

เส้นสายเป็นเส้นตรงที่แบ่งเป็นส่วนๆ เราสร้างพวกมันเหมือนกับจุด แต่เราให้พิกัดคู่สำหรับแต่ละจุดของสตริงเส้น:

var linestring_feature = ol. Feature ใหม่ ({ เรขาคณิต: ใหม่ ol.geom. LineString (

ขั้นตอนที่ 4 เพิ่มคุณสมบัติให้กับเลเยอร์เวกเตอร์

หากต้องการเพิ่มคุณลักษณะลงในแผนที่ คุณต้องเพิ่มคุณลักษณะลงในแหล่งที่มา ซึ่งคุณเพิ่มลงในเลเยอร์เวกเตอร์ ซึ่งคุณสามารถเพิ่มลงในแผนที่ได้:

var vector_layer = ol.layer. Vector ใหม่ ({ แหล่งที่มา: ol.source. Vector ใหม่ ({ คุณสมบัติ: [point_feature, linestring_feature] }) }) map.addLayer (vector_layer);

ส่วนที่ 2 จาก 3: การเปลี่ยนรูปเรขาคณิตของคุณลักษณะให้ใช้พิกัด

เช่นเดียวกับซอฟต์แวร์การทำแผนที่ที่มีประสิทธิภาพ แผนที่ OpenLayers สามารถมีชั้นต่างๆ ได้พร้อมวิธีการแสดงข้อมูลที่แตกต่างกัน เนื่องจาก Earth เป็นลูกโลกและไม่แบน เมื่อเราพยายามแสดงมันบนแผนที่แบบแฟลตของเรา ซอฟต์แวร์จึงต้องปรับตำแหน่งให้ตรงกับแผนที่แบบเรียบ วิธีต่างๆ เหล่านี้ในการแสดงข้อมูลแผนที่เรียกว่า ประมาณการ. ในการใช้เลเยอร์เวกเตอร์และเลเยอร์ไทล์ร่วมกันในแผนที่เดียวกัน หมายความว่าเราต้องเปลี่ยนเลเยอร์จากการฉายภาพหนึ่งเป็นอีกภาพหนึ่ง

ขั้นตอนที่ 1 ใส่คุณสมบัติลงในอาร์เรย์

เราเริ่มต้นด้วยการรวมคุณสมบัติที่เราต้องการแปลงเป็นอาร์เรย์ที่เราทำซ้ำได้

var features = [point_feature, linestring_feature];

ขั้นตอนที่ 2 เขียนฟังก์ชันการแปลง

ใน OpenLayers เราสามารถใช้ฟังก์ชัน transform() บนออบเจกต์เรขาคณิตของแต่ละฟีเจอร์ได้ วางโค้ดการแปลงนี้เป็นฟังก์ชันที่เราสามารถเรียกได้ในภายหลัง:

ฟังก์ชั่น transform_geometry (องค์ประกอบ) { var current_projection = ol.proj. Projection ใหม่ ({รหัส: "EPSG: 4326"}); var new_projection = tile_layer.getSource().getProjection(); องค์ประกอบ.getGeometry().transform(current_projection, new_projection);); }

ขั้นตอนที่ 3 เรียกใช้ฟังก์ชันการแปลงบนคุณสมบัติ

ตอนนี้เพียงแค่วนซ้ำผ่านอาร์เรย์

features.forEach(transform_geometry);

ส่วนที่ 3 จาก 3: การตั้งค่าสไตล์เลเยอร์เวกเตอร์

ในการเปลี่ยนลักษณะแต่ละจุดบนแผนที่ เราจำเป็นต้องสร้างและใช้สไตล์ รูปแบบสามารถเปลี่ยนสี ขนาด และคุณลักษณะอื่นๆ ของจุดและเส้นได้ และยังสามารถแสดงภาพสำหรับแต่ละจุด ซึ่งสะดวกมากสำหรับแผนที่ที่ปรับแต่งเอง ส่วนนี้ไม่จำเป็น แต่สนุกและมีประโยชน์

ขั้นตอนที่ 1 สร้างการเติมและสโต๊ค

สร้างวัตถุสไตล์การเติมและสีแดงกึ่งโปร่งใส และลักษณะเส้นขีด (เส้น) ที่เป็นเส้นทึบสีแดง:

var fill = new ol.style. Fill({ สี: [180, 0, 0, 0.3] }); var stroke = ol.style. Stroke ใหม่ ({ สี: [180, 0, 0, 1] ความกว้าง: 1 });

ขั้นตอนที่ 2 สร้างสไตล์และนำไปใช้กับเลเยอร์

ออบเจ็กต์สไตล์ OpenLayers ค่อนข้างมีประสิทธิภาพ แต่เราจะตั้งค่าการเติมและจังหวะสำหรับตอนนี้เท่านั้น:

var style = new ol.style. Style({ image: new ol.style. Circle({ เติม: เติม สโตรก: สโตรก รัศมี: 8 }), เติม: เติม, สโตรก: สโตรก }); vector_layer.setStyle(สไตล์);

แนะนำ: