การจัดรูปแบบที่ซับซ้อนสําหรับ LineString ด้วย DrawOrder

Josh Livni ทีม Google Geo API
ธันวาคม 2010

วัตถุประสงค์

บทแนะนํานี้จะแนะนําให้คุณรู้จักกับองค์ประกอบ KML ใหม่ 2-3 อย่างซึ่งมาพร้อมกับ Google Earth 6.0 และวิธีใช้องค์ประกอบเหล่านั้นในการสร้างรถเข็นที่ซับซ้อนสําหรับ LineStyles องค์ประกอบที่จะเรียนรู้คือ <gx:physicalWidth>, <gx:outerColor>, <gx:outerWidth> และ <gx:drawOrder>

บทนำ

ก่อนการเปิดตัว Google Earth 6.0 คุณถูกจํากัดความสามารถในการกําหนดรูปแบบการ์ตูนที่ซับซ้อนสําหรับ LineStrings เช่น หากคุณต้องการสร้างสไตล์สําหรับถนน โดยที่กึ่งกลางของ LineString มีสีต่างจากขอบ คุณจะต้องวาดทั้ง 2 สตริงที่มีความกว้างต่างกัน และคุณไม่สามารถรับประกันลําดับการวาดของถนนได้

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

ถนนแบบพื้นฐาน

องค์ประกอบที่สนใจอย่างแรกคือ <gx:physicalWidth> ซึ่งช่วยให้คุณตั้งค่าความกว้างของบรรทัดเป็นเมตรเป็นพิกเซลแทนพิกเซลได้ ในกรณีของตัวอย่างถนนของเรา ซึ่งหมายความว่าคุณสามารถกําหนดความกว้างของถนนให้ตรงกับภาพต้นฉบับ ไม่ว่าผู้ใช้ปลายทางจะดูถนนจากระดับใด เมื่อคุณได้ระดับความสูง ถนนจะลดลงเป็นพิกเซล ทําให้เกิดเอฟเฟกต์ที่คุณจะเห็นเฉพาะ LineString เมื่อซูมเข้าอย่างใกล้ชิด ซึ่งอาจเป็นประโยชน์หากคุณไม่ต้องการเน้นถนนขนาดเล็กจากทางไกล หรือต้องการดูให้แน่ใจว่ารถเข็นของคุณมีตรงกับภาพถ่ายดาวเทียมตลอดเวลา

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
  <name>Road Styling</name>
  <Style id="street">
    <LineStyle>
      <color>ff235523</color>
      <gx:physicalWidth>12</gx:physicalWidth>
    </LineStyle>
  </Style>
  <Placemark>
    <styleUrl>#street</styleUrl>
    <LineString>
      <coordinates>
      -122.2442883478408,37.4347536724074,0
      -122.2417741446485,37.43594997501623,0
      -122.2414951359056,37.43611878445952,0
      </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

เมื่อเปลี่ยนระดับความสูงของกล้องใน Google Earth จะเห็นว่าระดับความสูงนั้นตรงกับความกว้างของภาพที่สําคัญตลอดเวลา

การเพิ่มทางเท้า

ตอนนี้คุณสามารถเพิ่มในองค์ประกอบ <gx:outerColor> และ <gx:outerWidth> ได้แล้วโดยการเพิ่มสีเขียวอ่อนบริเวณขอบถนนของเราเพื่อแสดงถึงทางเดิน ตั้งค่า 25% ของพิกเซลทั้งหมดของถนนให้เป็นสีเทาอ่อน

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
  <name>Road Styling</name>
  <Style id="street_sidewalk">
    <LineStyle>
      <color>ff235523</color>
      <gx:physicalWidth>12</gx:physicalWidth>
      <gx:outerColor>ff55ff55</gx:outerColor>
      <gx:outerWidth>0.25</gx:outerWidth>
    </LineStyle>
  </Style>
  <Placemark>
    <styleUrl>#street_sidewalk</styleUrl>
    <LineString>
      <coordinates>
      -122.2442883478408,37.4347536724074,0
      -122.2417741446485,37.43594997501623,0
      -122.2414951359056,37.43611878445952,0
      </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

เนื่องจากความกว้างของถนนมีการตั้งค่าเป็น 12 เมตร ค่า .25 สําหรับความกว้างภายนอกหมายความว่าความกว้าง 3 เมตรจะได้รับการตั้งค่าเป็นสีเขียวที่สว่างขึ้น (ประมาณ 1.5 เมตรในแต่ละด้านของถนน)

สะพานทางหลวง

เมื่อมีถนนพื้นฐานแล้ว ก็ถึงเวลาขับผ่านทางหลวงพิเศษ ส่วนนี้จะเป็นสีส้มอ่อนที่มีเส้นค่ามัธยฐานสีส้มเข้ม การเพิ่มกุญแจที่นี่คือการใส่ <gx:drawOrder> เท่ากับ 1 (ค่าเริ่มต้นคือ 0) ใน <LineSring> เพื่อให้มั่นใจว่าทางหลวงจะแสดงอยู่บนเส้นทางถนน หากคุณกําลังสร้างการสับเปลี่ยนระหว่างทางหลวงที่ซับซ้อนมากขึ้น (หรือรถเข็นที่ต้องมี LineString มากกว่า 2 รายการที่ทับซ้อนกัน) คุณสามารถเพิ่มค่าที่สูงกว่าให้กับ <gx:drawOrder> สําหรับแท็กที่ต้องการให้แสดงที่ด้านบน

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
  <name>Road Styling</name>
  <Style id="street_sidewalk">
    <LineStyle>
      <color>ff235523</color>
      <gx:physicalWidth>10</gx:physicalWidth>
      <gx:outerColor>ff55ff55</gx:outerColor>
      <gx:outerWidth>0.25</gx:outerWidth>
    </LineStyle>
  </Style>
  <Style id="highway">
    <LineStyle>
      <color>cc1447ff</color>
      <gx:physicalWidth>20</gx:physicalWidth>
      <gx:outerColor>cc1473ff</gx:outerColor>
      <gx:outerWidth>0.75</gx:outerWidth>
    </LineStyle>
  </Style>
  <Placemark>
    <styleUrl>#street_sidewalk</styleUrl>
    <LineString>
      <coordinates>
     -122.2442883478408,37.4347536724074,0
     -122.2417741446485,37.43594997501623,0
     -122.2414951359056,37.43611878445952,0
      </coordinates>
    </LineString>
  </Placemark>
  <Placemark>
    <styleUrl>#highway</styleUrl>
    <LineString>
    <gx:drawOrder>1</gx:drawOrder>
    <coordinates>
      -122.2442692500139,37.43634904345254,0
      -122.2415928723012,37.43416417520744,0
    </coordinates>
    </LineString>
  </Placemark>
</Document>
</kml>

ขั้นตอนถัดไปคือ

ความสามารถในการอธิบายแผนภูมิเส้นบรรทัดเดียวที่มีหลายสี ร่วมกับการควบคุมลําดับการแสดงผลจะช่วยให้คุณสร้างแผนภูมิเส้นที่มีความซับซ้อนซึ่งก่อนหน้านี้ยังไม่เคยทําได้ ไม่ว่าจะสร้างสะพานลอยทางหลวงหรือโครงการศิลปะนามธรรม ก็ได้อย่างเพลิดเพลินด้วยกฎการจัดรูปแบบเหล่านี้