การทัวร์ชมใน KML

สารบัญ

บทนํา

การเดินทางใหม่ใน Google Earth 5.0 การเดินทางช่วยให้เที่ยวบินที่ควบคุมเข้าถึงข้อมูลทางภูมิศาสตร์ได้ และประกอบไปด้วย

  • ระยะเวลาเที่ยวบินที่เจาะจงระหว่างสถานที่
  • บินผ่านสถานที่ตั้งได้อย่างราบรื่น
  • กําลังเล่นเสียงไฟล์เสียงในเวลาที่กําหนดไว้ล่วงหน้าในระหว่างทัวร์
  • การอัปเดตฟีเจอร์ KML ชั่วคราวในขอบเขตของทัวร์

หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการทัวร์ชมจากมุมมองไคลเอ็นต์ของ Google Earth โปรดไปที่คู่มือผู้ใช้ Google Earth

เนมสเปซส่วนขยายของ Google

องค์ประกอบ KML ที่กําหนดทัวร์ชมจะอยู่ในชุดส่วนขยายไปยังมาตรฐาน KML ของ OGC โดยใช้คํานําหน้า gx ในการใช้งาน คุณต้องใส่ URI เนมสเปซที่ถูกต้องในองค์ประกอบ <kml> แบบเปิดในไฟล์ KML ดังนี้

<kml xmlns="http://www.opengis.net/kml/2.2"
 xmlns:gx="http://www.google.com/kml/ext/2.2">

องค์ประกอบที่เกี่ยวข้องกับการทัวร์ชมในชุดส่วนขยาย gx ประกอบด้วย

<gx:Tour> <gx:playMode>
<gx:Playlist> <gx:Wait>
<gx:Flyto> <gx:AnimatedUpdate>
<gx:flyToMode> <gx:SoundCue>
<gx:TourControl> <gx:duration>

ระบบรองรับทัวร์ชมใน Google Earth 5.0 แต่เบราว์เซอร์ภูมิศาสตร์อื่นๆ อาจไม่รองรับ หากเบราว์เซอร์ไม่รองรับส่วนขยายบางรายการ ข้อมูลในส่วนขยายดังกล่าวควรจะถูกนําไปใช้อย่างเงียบๆ และไฟล์ KML ที่เหลือควรโหลดโดยไม่มีข้อผิดพลาด

คําศัพท์

การเข้าชมขั้นต้น: หนึ่งในองค์ประกอบที่กําหนดการกระทําในทัวร์ชม ตัวอย่างการสํารวจพื้นฐานคือ FlyTo ที่กําหนดโดยองค์ประกอบ <gx:FlyTo> และองค์ประกอบย่อย

playlist: คอนเทนเนอร์สําหรับรายการรายละเอียดทัวร์ของทัวร์คอนเสิร์ตที่กําหนด เพลย์ลิสต์จะแสดงภาพบนไทม์ไลน์ได้ (ดูข้อมูลเพิ่มเติมในไทม์ไลน์ในทัวร์ชม)

โครงสร้างของทัวร์ชม

ระบบจะสร้างทัวร์ชมโดยวางองค์ประกอบที่เฉพาะเจาะจงลงในไฟล์ KML ไฟล์ KML อาจมีองค์ประกอบ KML ทางกฎหมายอื่นๆ ร่วมกับการทัวร์ชม

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

complete_ Tour_example.KML

<?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">

<Document>
  <name>A tour and some features</name>
  <open>1</open>

  <gx:Tour>
    <name>Play me!</name>
    <gx:Playlist>

      <gx:FlyTo>
        <gx:duration>5.0</gx:duration>
        <!-- bounce is the default flyToMode -->
        <Camera>
          <longitude>170.157</longitude>
          <latitude>-43.671</latitude>
          <altitude>9700</altitude>
          <heading>-6.333</heading>
          <tilt>33.5</tilt>
        </Camera>
      </gx:FlyTo>

      <gx:Wait>
        <gx:duration>1.0</gx:duration>
      </gx:Wait>

      <gx:FlyTo>
        <gx:duration>6.0</gx:duration>
        <Camera>
          <longitude>174.063</longitude>
          <latitude>-39.663</latitude>
          <altitude>18275</altitude>
          <heading>-4.921</heading>
          <tilt>65</tilt>
          <altitudeMode>absolute</altitudeMode>
        </Camera>
      </gx:FlyTo>

      <gx:FlyTo>
        <gx:duration>3.0</gx:duration>
        <gx:flyToMode>smooth</gx:flyToMode>
        <LookAt>
          <longitude>174.007</longitude>
          <latitude>-39.279</latitude>
          <altitude>0</altitude>
          <heading>112.817</heading>
          <tilt>68.065</tilt>
          <range>6811.884</range>
          <altitudeMode>relativeToGround</altitudeMode>
        </LookAt>
      </gx:FlyTo>

      <gx:FlyTo>
        <gx:duration>3.0</gx:duration>
        <gx:flyToMode>smooth</gx:flyToMode>
        <LookAt>
          <longitude>174.064</longitude>
          <latitude>-39.321</latitude>
          <altitude>0</altitude>
          <heading>-48.463</heading>
          <tilt>67.946</tilt>
          <range>4202.579</range>
          <altitudeMode>relativeToGround</altitudeMode>
        </LookAt>
       </gx:FlyTo>

      <gx:FlyTo>
        <gx:duration>5.0</gx:duration>
        <LookAt>
          <longitude>175.365</longitude>
          <latitude>-36.523</latitude>
          <altitude>0</altitude>
          <heading>-95</heading>
          <tilt>65</tilt>
          <range>2500</range>
          <altitudeMode>relativeToGround</altitudeMode>
        </LookAt>
      </gx:FlyTo>

      <gx:AnimatedUpdate>
        <gx:duration>0.0</gx:duration>
        <Update>
          <targetHref/>
          <Change>
            <Placemark targetId="pin2">
              <gx:balloonVisibility>1</gx:balloonVisibility>
            </Placemark>
          </Change>
        </Update>
      </gx:AnimatedUpdate>

      <gx:Wait>
        <gx:duration>6.0</gx:duration>
      </gx:Wait>

    </gx:Playlist>
  </gx:Tour>

  <Folder>
    <name>Points and polygons</name>

    <Style id="pushpin">
      <IconStyle>
        <Icon>
          <href>http://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png</href>
        </Icon>
      </IconStyle>
    </Style>

    <Placemark id="mountainpin1">
      <name>New Zealand's Southern Alps</name>
      <styleUrl>#pushpin</styleUrl>
      <Point>
        <coordinates>170.144,-43.605,0</coordinates>
      </Point>
    </Placemark>

    <Placemark id="pin2">
      <name>The End</name>
      <description>
        Learn more at http://developers.google.com/kml/documentation
      </description>
      <styleUrl>pushpin</styleUrl>
      <Point>
        <coordinates>175.370,-36.526,0</coordinates>
      </Point>
    </Placemark>

    <Placemark id="polygon1">
      <name>Polygon</name>
      <Polygon>
        <tessellate>1</tessellate>
        <outerBoundaryIs>
          <LinearRing>
            <coordinates>
              175.365,-36.522,0
              175.366,-36.530,0
              175.369,-36.529,0
              175.366,-36.521,0
              175.365,-36.522,0
            </coordinates>
          </LinearRing>
        </outerBoundaryIs>
      </Polygon>
    </Placemark>

  </Folder>
</Document>
</kml>

ลําดับเวลาการทัวร์

ทัวร์ชมประกอบด้วยชุดเนื้อหาต้นฉบับของทัวร์ชม FlyTos, Waits, TourControls, AnimatedUpdates และ SoundCues ปัจจัยพื้นฐานบางส่วนจะเล่นกันไปทีละชั้นและรอให้ดําเนินการเป็นลําดับแรก ส่วนแคมเปญอื่นๆ จะทํางานพร้อมกันกับองค์ประกอบพื้นฐานอื่นๆ จึงทํางานหลายอย่างพร้อมกันได้

กลุ่มหลักที่เกิดขึ้นในซีรีส์

  • <gx:FlyTo>
  • <gx:Wait>
  • <gx:TourControl>

องค์ประกอบพื้นฐานเหล่านี้จะเกิดขึ้นทีละองค์ประกอบและต้องทําให้เสร็จก่อนก่อนที่เพลย์ลิสต์จะย้ายไปองค์ประกอบอื่นๆ ทุกประเภท ซึ่งหมายความว่าโดยค่าเริ่มต้นแล้ว จะมีประเภทพื้นฐานของชุดหนังสือ (FlyTo, Wait หรือ TourControl) ได้เพียงรายการเดียว และเริ่มใส่ SoundCues หรือ Animatedupdates เพิ่มเติมไม่ได้

ค่าพื้นฐานที่เกิดขึ้นพร้อมกัน

  • <gx:AnimatedUpdate>
  • <gx:SoundCue>

องค์ประกอบพื้นฐานเหล่านี้จะปรากฏเมื่อปรากฏในเพลย์ลิสต์ เมื่อเริ่มเพลย์ลิสต์แล้ว เพลย์ลิสต์จะไปยังช่วงถัดไปทันทีโดยไม่ต้องรอให้ SoundCue หรือ AnimatedUpdate เล่นจบ ซึ่งหมายความว่า

  • ใส่ SoundCues และ/หรือ AnimatedUpdates กี่รายการพร้อมกันก็ได้ โดยการแนะนําให้คิวหนึ่งเรียงกันไปเรื่อยๆ ในเพลย์ลิสต์
  • SoundCue และ/หรือ Animatedupdates อาจเกิดขึ้นได้ในขณะที่ชุดเนื้อหาต้นฉบับของประเภทซีรีส์กําลังเล่น (แต่ไม่สามารถเริ่มได้ในขณะที่ชุดประเภทของซีรีส์กําลังเล่น)

แผนภาพด้านล่างแสดงพฤติกรรมนี้ คลิกรูปภาพเพื่อดูมุมมองที่ละเอียดยิ่งขึ้น รวมถึงเนื้อหา KML ที่กําหนดลักษณะพื้นฐานแต่ละรายการในเพลย์ลิสต์


 

แผนภาพแสดงให้เห็นว่า FlyTo แต่ละรายการจะใช้เวลาตามที่กําหนด (ระบุไว้ในองค์ประกอบ <gx:duration>) เมื่อเวลาผ่านไประยะหนึ่งแล้ว การทดสอบจะเริ่มขึ้นครั้งแรกต่อไป

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

การอัปเดตภาพเคลื่อนไหวจะทํางานในลักษณะเดียวกัน หากไอคอนของหมุดมีการตั้งค่าให้เพิ่มขนาดเมื่อเกิน 5 วินาที ไอคอนนั้นจะปรากฏขึ้นพร้อมกับองค์ประกอบพื้นฐานถัดไปในไทม์ไลน์หลัก

FlyTo และ flyToMode

ทัวร์ชมจะย้ายจากตําแหน่งหนึ่งไปยังอีกที่หนึ่งโดยใช้องค์ประกอบ <gx:FlyTo> ซึ่งจะมี AbstractView (<Camera> หรือ <LookAt>) ที่กําหนดตําแหน่งการดู มุม และระดับความสูงภายใน Google Earth

นอกจากนี้ ยังสามารถระบุ flyToMode ที่จะบอกเบราว์เซอร์ว่าจะดําเนินการอย่างไร ก่อนการนํา <gx:Tour> มาใช้ จะมี "ทัวร์ชม" เล่นในเบราว์เซอร์โดยเปลี่ยนไปใช้หมุดกับหมุด ซึ่งเป็นความเร็วของเที่ยวบิน (ซึ่งเบราว์เซอร์กําหนด) จะช้าลงเมื่อเบราว์เซอร์เข้าใกล้หมุด และจะสิ้นสุดด้วยอัตราความเร็วเป็น 0 ก่อนที่จะไปยังหมุดถัดไป คุณยังคงระบุพฤติกรรมนี้ในทัวร์ชมได้โดยใช้พร็อพเพอร์ตี้องค์ประกอบ <gx:flyToMode>bounce</gx:flyToMode>

flyToMode ของ Smooth ช่วยให้การบินผ่านพื้นที่ต่างๆ เป็นไปอย่างราบรื่นและควบคุมได้ อัตราความเร็วระหว่างจุดจะถูกควบคุมด้วยการรวมองค์ประกอบ <gx:duration> ซึ่งกําหนดระยะเวลาที่เบราว์เซอร์ใช้เดินทางจากจุดปัจจุบันไปยังมุมมองถัดไปที่กําหนดไว้ เที่ยวบินที่ไม่สมบูรณ์สร้างขึ้นจากชุด FlyTos ที่มี flyToMode อันราบรื่น เบราว์เซอร์ Earth จะแทรกข้อมูลความเร็วและเส้นโค้งระหว่างจุดต่างๆ เพื่อให้หมุดแต่ละจุดมาถึงในเวลาที่ระบุไว้ใน KML อัตราความเร็วต่างจาก flyToMode ของ bounce ตรงที่อัตราความเร็วจะไม่ถึง 0 จนกว่าเที่ยวบินจะเสียด้วยเหตุการณ์ใดๆ ต่อไปนี้

  • จบทัวร์
  • จุดที่มี flyToMode ของการตีกลับ หรือ
  • กําลังรอ

การหยุดชั่วคราว การอัปเดตแบบเคลื่อนไหว และเสียงจะไม่ทําให้เที่ยวบินขัดข้อง

บินครั้งแรก

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

หากตั้งค่า <gx:flyToMode> เป็นราบรื่นสําหรับ FlyTo ครั้งแรก และตามด้วย FlyTo ที่ราบรื่นยิ่งขึ้น ตําแหน่งเริ่มต้นของผู้ดูจะถือเป็นจุดในเส้นโค้งที่เรียบ และจะส่งผลต่อเส้นโค้งของเส้นทางระหว่างจุดแรกกับจุดถัดไป ซึ่งหมายความว่า FlyTos ซีรีส์เริ่มต้นจะแตกต่างกันไปสําหรับผู้ชมแต่ละราย ทั้งนี้ขึ้นอยู่กับสิ่งที่ดูในไคลเอ็นต์ Earth เมื่อเริ่มต้นทัวร์ หากยังต้องการบิน FlyTo ไปยังจุดแรกที่ราบรื่น ให้แทรก <gx:Wait> ลงในโค้ดทัวร์ชมหลังจาก FlyTo ครั้งแรก การดําเนินการนี้จะแยกตําแหน่งเริ่มต้นออกจากส่วนที่เหลือของทัวร์ชม

ตัวอย่าง

ตัวอย่างต่อไปนี้แสดงความแตกต่างระหว่างอัตราตีกลับและ flyToMode ที่ราบรื่น ทัวร์ชมแต่ละครั้งจะเข้าสู่หมุดเดียวกัน แต่ใช้ flyToModes แตกต่างกัน เล่นทัวร์ชมใน Google Earth คลิกลิงก์เหนือข้อมูลโค้ดแต่ละรายการ แล้วดับเบิลคลิกชื่อทัวร์ชมจากแผงสถานที่ใน Google Earth

bounce_example.KML

<gx:FlyTo>
  <gx:duration>4.0</gx:duration>
  <!-- bounce is the default flyToMode -->
  <LookAt>
    <longitude>-121.303179</longitude>
    <latitude>45.993041</latitude>
    <altitude>0</altitude>
    <heading>-27.923387</heading>
    <tilt>71.600075</tilt>
    <range>22570.546801</range>
    <altitudeMode>relativeToGround</altitudeMode>
  </LookAt>
</gx:FlyTo>

<!-- ...snip... -->

smooth_example.KML

<gx:FlyTo>
  <gx:duration>4.0</gx:duration>
  <gx:flyToMode>smooth</gx:flyToMode>
  <LookAt>
    <longitude>-121.303179</longitude>
    <latitude>45.993041</latitude>
    <altitude>0</altitude>
    <heading>-27.923387</heading>
    <tilt>71.600075</tilt>
    <range>22570.546801</range>
    <altitudeMode>relativeToGround</altitudeMode>
  </LookAt>
</gx:FlyTo>

<!-- ...snip... -->

กําลังรอและหยุดชั่วคราว

การรอจะหยุดการเคลื่อนไหวผ่านพื้นที่ในทัวร์ชม แต่จะช่วยให้ไฟล์เสียงและการอัปเดตภาพเคลื่อนไหวดําเนินต่อไปได้ ระยะเวลารอจะระบุไว้ใน KML

หยุดชั่วคราวจะหยุดการทัวร์ชมในตําแหน่งปัจจุบันเสมือนว่าผู้ใช้ได้คลิกปุ่มหยุดชั่วคราวและส่งผลต่อองค์ประกอบพื้นฐานทั้งหมด ทัวร์ชมจะกลับมาทํางานอีกครั้งเมื่อผู้ใช้เลือกปุ่มเล่นในตัวควบคุมทัวร์ชมใน Google Earth

รอ

องค์ประกอบนี้จะมีผลกับกล้องเท่านั้น โดยระบุระยะเวลาระหว่างที่กล้องยังคงอยู่ ไฟล์เสียงที่เล่นอยู่และ/หรือการอัปเดตภาพเคลื่อนไหวจะไม่ได้รับผลกระทบและต้องรอต่อไป ระบบอาจให้เวลารอเพื่อให้ไฟล์เสียงหรือเวลาอัปเดตเสร็จสมบูรณ์ ก่อนที่ FlyTo ถัดไปจะเริ่มต้นหรือก่อนที่ทัวร์จะสิ้นสุดลง

<gx:Wait>
    <gx:duration>10.0</gx:duration>   <!-- wait time in seconds -->
</gx:Wait>

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

หยุดชั่วคราว

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

การหยุดชั่วคราวจะไม่ทําลายเส้นทางการบินที่ราบรื่น ดังนั้นเบราว์เซอร์จึงคํานวณอัตราความเร็วระหว่างจุดใดฝั่งหนึ่งของการหยุดไว้ชั่วคราว เหมือนกับว่าการหยุดแสดงโฆษณาชั่วคราวนั้นไม่มีอยู่จริง

<gx:TourControl>
    <gx:playMode>pause</gx:playMode>
</gx:TourControl>

ตัวอย่าง

ดูตัวอย่างการรอด้านล่าง ไฟล์เสียงได้รับการเยียวยา ซึ่งประกอบด้วยคําพูดแนะนํา 10 วินาที การแทรกรอ 10 วินาทีจะแทรกทันทีหลังคิวโฆษณาเสียง ทําให้ FlyTo ต่อไปนี้ไม่เกิดขึ้นจนกว่าจะพูดเสร็จ

wait_example.KML

<?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">   

<gx:Tour>
  <gx:Playlist>

    <gx:SoundCue>
      <href>
        http://dev.keyhole.com/codesite/cntowerfacts.mp3
      </href>   <!-- this file is ten seconds long -->
    </gx:SoundCue>

    <gx:Wait>
      <gx:duration>10</gx:duration>
    </gx:Wait>

    <gx:FlyTo>
      <gx:duration>5</gx:duration>
      <gx:flyToMode>bounce</gx:flyToMode>
      <LookAt>
        <longitude>-79.387</longitude>
<latitude>43.643</latitude>
<altitude>0</altitude> <heading>-172.3</heading> <tilt>10</tilt> <range>1200</range> <altitudeMode>relativeToGround</altitudeMode>
</LookAt> </gx:FlyTo> </gx:Playlist> </gx:Tour> </kml>

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

pause_example.KML

<?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">  

<gx:Tour>
  <gx:Playlist>

    <gx:FlyTo>
<gx:duration>5</gx:duration>
<gx:flyToMode>bounce</gx:flyToMode>
<LookAt>
<longitude>-79.387</longitude>
<latitude>43.643</latitude>
<altitude>0</altitude>
<heading>-172.3</heading>
<tilt>10</tilt>
<range>1200</range>
<altitudeMode>relativeToGround</altitudeMode>
</LookAt>
</gx:FlyTo> <gx:TourControl> <gx:playMode>pause</gx:playMode> </gx:TourControl> <gx:SoundCue> <href> http://dev.keyhole.com/codesite/cntowerfacts.mp3 </href> <!-- this file is ten seconds long --> </gx:SoundCue> <gx:Wait> <gx:duration>10.0</gx:duration> </gx:Wait> </gx:Playlist> </gx:Tour> </kml>

การอัปเดต

ฟีเจอร์ KML ในสภาพแวดล้อม Earth สามารถแก้ไข สร้าง หรือสร้างระหว่างทัวร์ชม รวมถึงขนาด รูปแบบ และตําแหน่งของหมุด การเพิ่มการวางซ้อนพื้น เรขาคณิต และอื่นๆ สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการอัปเดต KML ให้อ่านส่วนการอัปเดตของคู่มือสําหรับนักพัฒนาซอฟต์แวร์

ระบบอาจอัปเดต KML ในระหว่างทัวร์และจะเปิดใช้ผ่านเอลิเมนต์ <gx:AnimatedUpdate> ได้ ลักษณะการทํางานในการอัปเดตภายในทัวร์ชมจะแตกต่างจากพฤติกรรมการอัปเดตใน NetworkLink ในสิ่งต่อไปนี้

  • ระบบจะย้อนกลับการอัปเดตไปยัง KML เมื่อออกทัวร์ชมและ
  • ระบบจะไม่รวมการอัปเดต KML เมื่อบันทึกสถานะปัจจุบัน

นอกจากนี้ การเปลี่ยนแปลงใดๆ ที่ส่งผลให้เกิดการเปลี่ยนแปลง (กล่าวคือ สถานะระดับกลาง เช่น การเปลี่ยนแปลงขนาด) จะเคลื่อนไหวตลอดระยะเวลาที่ระบุ การเปลี่ยนแปลงที่ไม่มีขั้นตอนระดับกลาง (เช่น บอลลูนคําอธิบายหรือการปิด) จะได้รับการอัปเดตเมื่อสิ้นสุดระยะเวลาที่ระบุเท่านั้น หากไม่ได้ระบุระยะเวลาไว้ การอัปเดตจะเกิดขึ้นทันที (ค่าเริ่มต้นของ <gx:duration> คือ 0.0)

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

<gx:AnimatedUpdate> และไทม์ไลน์ของทัวร์

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

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

นอกจากนี้ ระบบจะตัดอัปเดตภาพเคลื่อนไหวให้สั้นลงหากขยายเกินระยะเวลาขององค์ประกอบ <gx:FlyTo> หรือ <gx:Wait> สุดท้าย คุณจะเปลี่ยนค่า <gx:duration> ที่เหมาะสมหรือแทรกองค์ประกอบ <gx:Wait> เพิ่มเติมไว้ที่ส่วนท้ายของเพลย์ลิสต์เพื่อให้เวลาอัปเดตภาพเคลื่อนไหวเสร็จสมบูรณ์

หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับไทม์ไลน์ โปรดอ่านไทม์ไลน์ในทัวร์ชมด้านบน

ตัวอย่าง

ข้อมูลโค้ดต่อไปนี้แสดงการเปลี่ยนแปลงของไอคอนหมุดหนึ่งๆ จากสเกล 1.0 เป็นสเกล 10.0 การเปลี่ยนแปลงนี้ใช้เวลามากกว่า 6.5 วินาที โดยไอคอนจะค่อยๆ ขยายจากขนาดเริ่มต้นไปจนถึงขนาดสุดท้าย

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

ภาพเคลื่อนไหวการอัปเดต_example.KML

<?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"> <Document> <name>gx:AnimatedUpdate example</name> <open>1</open> <Style id="style"> <IconStyle id="iconstyle"> <scale>1.0</scale> </IconStyle> </Style> <Placemark id="mountainpin1"> <name>New Zealand's Southern Alps</name> <styleUrl>#style</styleUrl> <Point> <coordinates>170.144,-43.605,0</coordinates> </Point> </Placemark> <gx:Tour> <name>Play me!</name> <gx:Playlist> <!-- The order and duration of TourPrimitives is important; in this example, the AnimatedUpdate needs 6.5 seconds to complete. The FlyTo provides 4.1, and the Wait 2.4, giving the update time to complete before the Tour ends. AnimatedUpdates don't hold Tours open, but FlyTos and Waits do. For more information, refer to: http://developers.google.com/kml/documentation/touring.html#tourtimelines --> <gx:AnimatedUpdate> <gx:duration>6.5</gx:duration> <Update> <targetHref></targetHref> <Change> <IconStyle targetId="iconstyle"> <scale>10.0</scale> </IconStyle> </Change> </Update> </gx:AnimatedUpdate> <gx:FlyTo> <gx:duration>4.1</gx:duration> <Camera> <longitude>170.157</longitude> <latitude>-43.671</latitude> <altitude>9700</altitude> <heading>-6.333</heading> <tilt>33.5</tilt> <roll>0</roll> </Camera> </gx:FlyTo> <!-- wait for the AnimatedUpdate to complete --> <gx:Wait> <gx:duration>2.4</gx:duration> </gx:Wait> </gx:Playlist> </gx:Tour> </Document> </kml>

การเพิ่มเสียง

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

  • mp3
  • AAC

ไม่ได้ระบุระยะเวลา

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

กําลังเปิดไฟล์เสียงหลายรายการ

ไฟล์เสียงจํานวนมากเล่นได้ทุกเมื่อ Google Earth จะผสมไฟล์เข้าด้วยกัน ซึ่งจะมีประโยชน์ในกรณีที่มีการโหลดไฟล์เพลงพื้นหลังในช่วงต้นของทัวร์ และใช้เสียงบรรยายในจุดนั้นๆ ตลอดทัวร์

อนุญาตให้ไฟล์เสียงเสร็จสมบูรณ์ก่อนการเล่นเวอร์ชันถัดไป

หากต้องการให้ทัวร์ชมรอขณะที่ไฟล์บันทึกเสียงเล่นอยู่ ให้ใส่องค์ประกอบ <gx:Wait> ต่อจากค่าเบื้องต้นของ <gx:SoundCue> <gx:Wait> ระบุเวลาเป็นวินาทีที่ทัวร์ชมควรรอก่อนไปยังเวอร์ชันถัดไปถัดไป

ไฟล์เสียงเล่นต่อไม่ได้หลังจากสิ้นสุดทัวร์ อาจต้องรอการยืดอายุการใช้งานของทัวร์ชมในขณะที่ไฟล์เสียงเล่นจบลง

ตัวอย่าง

ทัวร์ชมด้านล่างมีความยาว 15 วินาที ซึ่งจะกําหนดโดยระยะเวลารวมของ <gx:FlyTo> และ <gx:Wait> คลิปเสียงแรกมีความยาว 15 วินาที และเล่นตลอดทัวร์ ไฟล์ที่ 2 จะได้รับการดูแลจัดการเป็นเวลา 5 วินาทีโดยผสมกับไฟล์แรกและเล่นเป็นเวลา 10 วินาที ต้องใช้ <gx:Wait> เพื่อขยายความยาวของทัวร์เพื่อให้คลิปเสียงมีเวลาเพียงพอที่จะดําเนินการ

soundcue_example.KML

<?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">

<gx:Tour>
  <gx:Playlist>
 
    <gx:SoundCue>
      <href>
        http://dev.keyhole.com/codesite/AJsBlues.mp3
      </href>    <!-- 15 second audio clip -->
    </gx:SoundCue>
 
    <gx:FlyTo>
      <gx:duration>5</gx:duration>
      <gx:flyToMode>bounce</gx:flyToMode>
      <LookAt>
        <longitude>-79.387</longitude>
<latitude>43.643</latitude>
<altitude>0</altitude>
<range>1200</range>
<tilt>10</tilt>
<heading>-172.3</heading>
<altitudeMode>relativeToGround</altitudeMode>
</LookAt> </gx:FlyTo> <gx:SoundCue> <href> http://dev.keyhole.com/codesite/cntowerfacts.mp3 </href> <!-- 10 second audio clip --> </gx:SoundCue> <gx:Wait> <gx:duration>10</gx:duration> <!-- continues the tour for 10 seconds --> </gx:Wait> <!-- while audio clip plays --> </gx:Playlist> </gx:Tour> </kml>

การเปิดบอลลูนคําอธิบาย

คุณเปิดหรือปิดบอลลูนคําอธิบายของหมุดระหว่างทัวร์ได้โดยใช้ <gx:balloonVisibility> ภายในการอัปเดตแบบเคลื่อนไหว ระบบจะทําการเปลี่ยนแปลงการแสดงผลบอลลูนเมื่อสิ้นสุดช่วงระยะเวลาที่กําหนด โดยการเคลื่อนไหวเหล่านี้จะไม่เคลื่อนไหวในช่วงระยะเวลาที่ระบุ การละเว้นค่า <gx:duration> จะกําหนดค่าเริ่มต้นเป็น 0.0 (บอลลูนจะเปิดหรือปิดทันที)

ตัวอย่าง

บอลลูน_ทัวร์ชมตัวอย่าง.KML

<?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">
  
  <Document>
    <name>balloonVisibility Example</name>
    <open>1</open>

    <gx:Tour>
      <name>Play me</name>
      <gx:Playlist>
 
        <gx:FlyTo>
          <gx:duration>5.0</gx:duration>
          <!-- bounce is the default flyToMode -->
          <LookAt>
            <longitude>-119.748584</longitude>
            <latitude>33.736266</latitude>
            <altitude>0</altitude>
            <heading>-9.295926</heading>
            <tilt>84.0957450</tilt>
            <range>4469.850414</range>
            <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
          </LookAt>
        </gx:FlyTo>

        <gx:AnimatedUpdate>
          <!-- the default duration is 0.0 -->
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="underwater1">
                <gx:balloonVisibility>1</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:Wait>
          <gx:duration>4.0</gx:duration>
        </gx:Wait>

        <gx:AnimatedUpdate>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="underwater1">
                <gx:balloonVisibility>0</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:FlyTo>
          <gx:duration>3</gx:duration>
          <gx:flyToMode>smooth</gx:flyToMode>
          <LookAt>
            <longitude>-119.782630</longitude>
            <latitude>33.862855</latitude>
            <altitude>0</altitude>
            <heading>-19.314858</heading>
            <tilt>84.117317</tilt>
            <range>6792.665540</range>
            <gx:altitudeMode>relativeToSeaFloor</gx:altitudeMode>
          </LookAt>
        </gx:FlyTo>

        <gx:AnimatedUpdate>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="underwater2">
                <gx:balloonVisibility>1</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:Wait>
          <gx:duration>4.0</gx:duration>
        </gx:Wait>

        <gx:AnimatedUpdate>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="underwater2">
                <gx:balloonVisibility>0</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:FlyTo>
          <gx:duration>3</gx:duration>
          <gx:flyToMode>smooth</gx:flyToMode>
          <LookAt>
            <longitude>-119.849578</longitude>
            <latitude>33.968515</latitude>
            <altitude>0</altitude>
            <heading>-173.948935</heading>
            <tilt>23.063392</tilt>
            <range>3733.666023</range>
            <altitudeMode>relativeToGround</altitudeMode>
          </LookAt>
        </gx:FlyTo>

        <gx:AnimatedUpdate>
          <Update>
            <targetHref/>
            <Change>
              <Placemark targetId="onland">
                <gx:balloonVisibility>1</gx:balloonVisibility>
              </Placemark>
            </Change>
          </Update>
        </gx:AnimatedUpdate>

        <gx:Wait>
          <gx:duration>4.0</gx:duration>
        </gx:Wait>

      </gx:Playlist>
    </gx:Tour>

    <Placemark id="underwater1">
      <name>Underwater off the California Coast</name>
      <description>
        The tour begins near the Santa Cruz Canyon, 
        off the coast of California, USA.
      </description>
      <Point>
        <gx:altitudeMode>clampToSeaFloor</gx:altitudeMode>
        <coordinates>-119.749531,33.715059,0</coordinates>
      </Point>
    </Placemark>

    <Placemark id="underwater2">
      <name>Still swimming...</name>
      <description>We're about to leave the ocean, and visit the coast...</description>
      <Point>
        <gx:altitudeMode>clampToSeaFloor</gx:altitudeMode>
        <coordinates>-119.779550,33.829268,0</coordinates>
      </Point>
    </Placemark>

    <Placemark id="onland">
      <name>The end</name>
      <description>
        <![CDATA[The end of our simple tour. 
        Use <gx:balloonVisibility>1</gx:balloonVisibility> 
        to show description balloons.]]>
      </description>
      <Point>
        <coordinates>-119.849578,33.968515,0</coordinates>
      </Point>
    </Placemark>

  </Document>
</kml>

ใส่ภาพในอดีต

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

ระบบจะใช้วันที่ที่ระบุล่าสุดสําหรับภาพการดําเนินการต่อทั้งหมด

ตัวอย่าง

historicalimagery_example.KML

<?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">

<gx:Tour>
  <name>Small town over time</name>
  <gx:Playlist>
    <gx:FlyTo>
      <gx:duration>5.0</gx:duration>
      <Camera>
        <gx:TimeStamp>
          <when>1990-08-04</when>
        </gx:TimeStamp>
        <longitude>-121.991</longitude>
        <latitude>47.857</latitude>
        <altitude>7000</altitude>
        <altitudeMode>absolute</altitudeMode>
      </Camera>
    </gx:FlyTo>

    <gx:FlyTo>
      <gx:duration>3.0</gx:duration>
      <gx:flyToMode>smooth</gx:flyToMode>
      <Camera>
        <gx:TimeStamp>
          <when>2009</when>
        </gx:TimeStamp>
        <longitude>-121.991</longitude>
        <latitude>47.857</latitude>
        <altitude>7000</altitude>
        <altitudeMode>absolute</altitudeMode>
      </Camera>
    </gx:FlyTo>

  </gx:Playlist>
</gx:Tour>
</kml>

ปัญหาที่ทราบ

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

  • องค์ประกอบ <gx:AnimatedUpdate> และ <gx:TourControl> จะทําลายเส้นโค้งที่สร้างโดยชุด FlyTos ที่ราบรื่น จุดสําคัญที่จุดใดด้านหนึ่งขององค์ประกอบเหล่านี้จะเข้าร่วมด้วยเส้นทางเชิงเส้น
  • ไฟล์เสียงที่โหลดด้วย <gx:SoundCue> จะเล่นต่อไประหว่างการหยุดชั่วคราวซึ่งเริ่มต้นโดย <gx:TourControl> เมื่อทัวร์ชมกลับมาทํางานอีกครั้ง Google Earth จะข้ามไปยังจุดในไฟล์ไฟล์เสียงที่ทริกเกอร์การหยุดชั่วคราว
  • เมื่อใช้โหมดระดับความสูงที่ไม่ใช่ค่าสัมบูรณ์ เส้นทางระหว่าง FlyTos อาจกระโดดขึ้นหรือลงเมื่อกล้องเข้าใกล้จุดหนึ่ง ปัญหานี้เกิดจากการโหลดข้อมูลภูมิประเทศที่อัปเดตลงในไคลเอ็นต์ เนื่องจากเมื่อกล้องเข้าใกล้จุดใดจุดหนึ่ง ข้อมูลเกี่ยวกับจุดดังกล่าวจึงยิ่งละเอียดมากขึ้น ดังนั้น อาจมีการอัปเดตระดับความสูงของพื้นด้านล่างจุดนั้นๆ และต้องมีการแก้ไขเส้นทางไปยังจุดนั้น

    กลไกการบันทึกใน Google Earth จะระบุโหมดระดับความสูงสัมบูรณ์สําหรับ FlyTo ทั้งหมด ด้วยเหตุนี้ คุณควรแปลงระดับความสูงเป็นค่าสัมบูรณ์ด้วย หากการแก้ไขเส้นทางเหล่านี้รบกวนการเข้าชม