Tham quan trong KML

Mục lục

Giới thiệu

Tính năng mới trong Google Earth 5.0 cho phép chuyến bay được kiểm soát thông qua dữ liệu không gian địa lý, bao gồm:

  • thời gian bay cụ thể giữa các địa điểm
  • chuyến bay suôn sẻ mà không có điểm dừng
  • phát tệp âm thanh vào những thời điểm được xác định trước trong suốt chuyến tham quan
  • cập nhật tạm thời đối với các đối tượng KML trong phạm vi của chuyến tham quan

Để biết thêm thông tin về các chuyến tham quan từ góc nhìn của ứng dụng Google Earth, vui lòng tham khảo Hướng dẫn sử dụng của Google Earth.

Vùng chứa tên phần mở rộng của Google

Các phần tử KML xác định chuyến tham quan nằm trong tập hợp các phần mở rộng với tiêu chuẩn KML OGC, sử dụng tiền tố gx. Để sử dụng các thành phần này, bạn phải đưa URI không gian tên chính xác vào phần tử <kml> mở đầu trong tệp KML:

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

Các phần tử liên quan đến chuyến tham quan trong nhóm tiện ích gx bao gồm:

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

Tham quan được hỗ trợ trong Google Earth 5.0, nhưng có thể không được hỗ trợ trong các trình duyệt địa lý khác. Nếu trình duyệt của bạn không hỗ trợ các tiện ích cụ thể, thì dữ liệu trong các tiện ích đó sẽ tự động bị bỏ qua và phần còn lại của tệp KML sẽ tải mà không có lỗi.

Thuật ngữ

nguyên hàm tham quan: một trong tập hợp các phần tử xác định hành động trong một chuyến tham quan. Một ví dụ về dữ liệu gốc tham quan là FlyTo, được xác định bởi phần tử <gx:FlyTo> và các phần tử con của phần tử đó.

playlist: vùng chứa danh sách các chuyến tham quan gốc có chức năng xác định chuyến tham quan. Danh sách phát này có thể hiển thị trong tiến trình (xem Dòng thời gian lưu diễn để biết thêm thông tin).

Cấu trúc của một chuyến tham quan

Các chuyến tham quan được xây dựng bằng cách đặt các phần tử cụ thể theo thứ tự vào một tệp KML. Tệp KML có thể chứa bất kỳ yếu tố KML hợp pháp nào khác cùng với chuyến tham quan.

Ví dụ sau đây cho thấy một chuyến tham quan hoàn chỉnh và một Thư mục có chứa một số dấu vị trí. Chuyến tham quan bắt đầu tại Đảo Nam New Zealand, trước khi bay về phía Bắc qua Núi Taranaki và giới thiệu cả chuyến bay mịn màngđẩy ruồiToModes, cũng như phương pháp <gx:balloonVisibility> để mở hộp chú giải mô tả. Các yếu tố tham quan được mô tả chi tiết hơn dưới đây.

complete_tour_example.SSH

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

Tiến trình tham quan

Chuyến tham quan bao gồm một loạt dữ liệu gốc về chuyến tham quan – FlyTos, Waits, TourControls, AnimatedUpdates và SoundCues. Một trong số các nguyên hàm này được phát lần lượt, trong đó đang chờ một thực thể gốc hoàn tất rồi mới bắt đầu thực hiện một quá trình. Một số khác chạy song song với các dữ liệu gốc khác, để nhiều hành động có thể diễn ra đồng thời.

Nội dung chính trong bộ sách

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

Các dữ liệu gốc này lần lượt diễn ra và phải hoàn chỉnh đầy đủ trước khi danh sách phát chuyển sang bất kỳ phần tử nào khác, thuộc bất kỳ loại nào. Điều này có nghĩa là tại một thời điểm, bạn chỉ có thể thực hiện một kiểu dữ liệu gốc (FlyTo, Wait hoặc TourControl) và không thể bắt đầu bổ sung SoundCues hoặc AnimatedUpdate trong khi một kiểu dữ liệu gốc đang diễn ra.

Nội dung chính diễn ra song song

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

Các dữ liệu gốc này được báo hiệu khi xuất hiện trong danh sách phát. Sau khi bắt đầu, danh sách phát sẽ ngay lập tức chuyển về bản gốc tiếp theo mà không cần đợi SoundCue hoặc AnimatedUpdate hoàn tất. Điều này có nghĩa là:

  • bất kỳ số lượng SoundCues và/hoặc AnimatedUpdate nào có thể diễn ra cùng một lúc, bằng cách đặt chúng lần lượt trong danh sách phát
  • SoundCues và/hoặc AnimatedUpdate có thể diễn ra trong khi các dữ liệu gốc loại chuỗi đang phát (mặc dù không thể bắt đầu trong khi đang phát các dữ liệu gốc)

Sơ đồ dưới đây minh hoạ hành vi này. Nhấp vào hình ảnh để xem chi tiết hơn, bao gồm cả nội dung KML xác định dữ liệu gốc trong danh sách phát.


 

Sơ đồ cho thấy mỗi FlyTo cần một khoảng thời gian cụ thể (được chỉ định trong phần tử <gx:duration>) để hoàn tất. Chỉ khi thời gian đó đã trôi qua, nguyên gốc tiếp theo mới bắt đầu.

Mặt khác, SoundCue diễn ra song song. Dữ liệu gốc tiếp theo trong tiến trình chính sẽ diễn ra ngay lập tức, cùng lúc với tệp âm thanh bắt đầu phát. Tệp âm thanh tiếp tục cho đến khi đến cuối tệp hoặc cuối chuyến tham quan, tùy theo điều kiện nào đến trước. Nếu chuyến tham quan kết thúc trước khi tệp âm thanh kết thúc thì tệp âm thanh sẽ ngừng phát. Bạn có thể phát số lượng tệp âm thanh bất kỳ lúc nào, mỗi tệp được tải vào tiến trình riêng.

Các bản cập nhật ảnh động hoạt động theo cách tương tự. Nếu biểu tượng của dấu vị trí được đặt để tăng kích thước trong khoảng thời gian 5 giây, thì biểu tượng sẽ được thực hiện trong khi những dữ liệu gốc tiếp theo trong dòng thời gian chính diễn ra.

FlyTo vàflyToMode

Các chuyến tham quan sẽ di chuyển từ vị trí này sang vị trí khác, mỗi chuyến được chỉ định bằng một phần tử <gx:FlyTo>. Tệp này chứa một AbstractView (<Camera> hoặc <LookAt>) xác định vị trí xem, góc và độ cao trong Google Earth.

Ngoài ra, một flyToMode có thể được chỉ định, cho trình duyệt biết cách tiếp cận điểm đó. Trước khi giới thiệu <gx:Tour>, 'các chuyến tham quan' đã được phát trong trình duyệt bằng cách chuyển từ dấu vị trí sang dấu vị trí - tốc độ chuyến bay (do trình duyệt xác định) sẽ chậm khi trình duyệt đến gần dấu vị trí, kết thúc bằng tốc độ không trước khi tiếp tục đến dấu vị trí tiếp theo. Hành vi này vẫn có thể được chỉ định trong các chuyến tham quan bằng cách sử dụng thuộc tính phần tử <gx:flyToMode>bounce</gx:flyToMode>.

mượtflyToMode giúp chuyến bay suôn sẻ và có kiểm soát thông qua không gian. Tốc độ giữa các điểm được kiểm soát bằng cách bao gồm phần tử <gx:duration>, giúp xác định thời gian trình duyệt cần để di chuyển từ điểm hiện tại đến chế độ xem đã xác định tiếp theo. Một chuyến bay không bị gián đoạn bao gồm một loạt FlyTos vớiflyToModes mượt mà - trình duyệt Earth nội suy tốc độ và đường dẫn cong giữa các điểm để mỗi dấu vị trí đều đạt đến đúng thời điểm được chỉ định trong KML. Không giống như flightToMode bounce, tốc độ không bao giờ đạt đến 0 cho đến khi chuyến bay bị hỏng do bất kỳ sự kiện nào sau đây:

  • kết thúc chuyến tham quan,
  • một điểm có chuyến bayToTo hoặc
  • đợi đã.

Tạm dừng, thông tin cập nhật bằng ảnh độngtín hiệu âm thanh không làm gián đoạn chuyến bay.

Bay ban đầu

<gx:FlyTo> đầu tiên có trong danh sách phát được chuyển tới từ góc nhìn hiện tại của người xem trong Google Earth. Thời lượng được quan sát để tốc độ đến điểm đầu tiên sẽ thay đổi rất lớn, tuỳ thuộc vào vị trí của người xem trong Trái đất khi bắt đầu chuyến tham quan. FlyTo này nên có thời lượng từ 5 giây trở lên và ở chế độ thoát để có trải nghiệm xem tốt nhất.

Nếu <gx:flyToMode> được đặt thành mịn đối với FlyTo đầu tiên và theo sau là các FlyTo mượt mà khác, vị trí ban đầu của người xem sẽ được coi là một điểm trong đường cong mượt mà và sẽ ảnh hưởng đến đường cong của đường dẫn giữa các điểm đầu tiên và các điểm tiếp theo. Điều này có nghĩa là loạt phim FlyTo mượt mà ban đầu sẽ khác nhau đối với từng người xem, tuỳ thuộc vào nội dung họ đang xem trong ứng dụng Earth khi chuyến tham quan bắt đầu. Nếu vẫn muốn chạy FlyTo mượt mà đến điểm ban đầu, bạn có thể chèn <gx:Wait> vào mã tham quan sau FlyTo đầu tiên. Thao tác này sẽ tách biệt vị trí ban đầu với phần còn lại của chuyến tham quan.

Ví dụ

Các ví dụ sau đây cho thấy sự khác biệt giữa số trang không truy cập và chế độ bayToModes mượt mà. Mỗi chuyến tham quan có cùng một dấu vị trí, nhưng lại sử dụng FirefoxToModes. Để phát các chuyến tham quan trong Google Earth, hãy nhấp vào các đường liên kết phía trên mỗi đoạn mã, rồi nhấp đúp vào tên chuyến tham quan trong bảng điều khiển Địa điểm trong Google Earth.

bounce_example.sftp

<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.SSH

<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... -->

Đang chờ và tạm dừng

Sự chờ đợi sẽ tạm dừng chuyển động qua không gian trong chuyến tham quan, nhưng cho phép tệp âm thanh và bản cập nhật hoạt ảnh tiếp tục. Thời gian chờ được chỉ định trong KML.

Việc tạm dừng sẽ dừng chuyến tham quan tại vị trí hiện tại của nó, như thể người dùng đã nhấp vào nút Tạm dừng và ảnh hưởng đến tất cả dữ liệu gốc. Chuyến tham quan chỉ tiếp tục khi người dùng chọn nút Phát trong điều khiển tham quan trong Google Earth.

Chờ

Phần tử này chỉ ảnh hưởng đến máy ảnh. Chế độ này chỉ định khoảng thời gian mà máy ảnh đứng yên. Mọi tệp âm thanh và/hoặc bản cập nhật động đang phát sẽ không bị ảnh hưởng và tiếp tục trong thời gian chờ. Có thể sử dụng lệnh chờ để hoàn tất các tệp âm thanh hoặc bản cập nhật trước khi FlyTo tiếp theo bắt đầu hoặc trước khi chuyến tham quan kết thúc.

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

Khoảng thời gian chờ được chỉ định bằng giây, sử dụng phần tử <gx:duration>. Sau khi thời gian trôi qua, chuyến tham quan sẽ tiếp tục với hành động được chỉ định tiếp theo trong danh sách phát. Lệnh đợi sẽ làm hỏng đường dẫn chuyến bay mượt mà để chuyển động của máy ảnh chậm lại về tốc độ bằng 0 tại bất kỳ điểm nào ngay trước thời gian chờ, bất kể chế độ bayToMode.

Tạm dừng

Các lệnh tạm dừng do người dùng kiểm soát được chỉ định bằng <gx:TourControl> và phần tử con của phần tử đó, <gx:playMode>. Giá trị sau có một giá trị tạm dừng duy nhất. Việc gọi hành động này tương tự như việc người dùng nhấp vào nút tạm dừng trong Google Earth – chuyến tham quan sẽ tạm dừng tại thời điểm đó và bị tạm dừng cho đến khi được nhấp vào nút Phát. Trong thời gian tạm dừng, người dùng có thể di chuyển tùy ý trong môi trường Earth. Khi người dùng nhấp vào Phát, họ sẽ được đưa trở lại điểm tham quan mà tại đó việc tạm dừng được đặt.

Lệnh tạm dừng không làm hỏng các đường dẫn chuyến bay mượt mà để tốc độ giữa các điểm ở một trong hai bên của điểm tạm dừng được trình duyệt tính toán như thể không có điểm tạm dừng đó.

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

Ví dụ

Sau đây là ví dụ về cách đợi. Tệp âm thanh được đánh dấu, chứa mười giây của lời nói giới thiệu. Chờ 10 giây được chèn ngay sau tín hiệu âm thanh, ngăn FlyTo sau đây diễn ra cho đến khi lời nói hoàn tất.

wait_example.sftp

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

Ví dụ sau đây minh hoạ việc sử dụng tính năng tạm dừng. Người xem được chuyển đến một vị trí cụ thể trong Earth, sau đó chuyến tham quan sẽ bị tạm dừng. Người dùng có thể di chuyển trong môi trường Trái đất trong bất kỳ khoảng thời gian nào. Khi đã sẵn sàng tiếp tục chuyến tham quan, họ phải chọn Phát từ các điều khiển tham quan - Google Earth sẽ chuyển về vị trí cuối cùng của chuyến tham quan và tiếp tục phát.

pause_example.SSH

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

Bản cập nhật

Bạn có thể sửa đổi, thay đổi hoặc tạo các tính năng KML trong môi trường Earth, bao gồm kích thước, kiểu và vị trí của dấu vị trí, thêm lớp phủ mặt đất, hình học và các tính năng khác. Để biết thêm thông tin về cách cập nhật KML, hãy đọc phần Cập nhật trong Hướng dẫn dành cho nhà phát triển.

Việc cập nhật KML có thể diễn ra trong chuyến tham quan và được bật thông qua việc sử dụng phần tử <gx:AnimatedUpdate>. Hành vi cập nhật trong chuyến tham quan khác với hành vi Cập nhật trong NetworkLink, trong đó:

  • Thông tin cập nhật về KML sẽ đảo ngược khi chuyến tham quan kết thúc và
  • các bản cập nhật cho KML không được bao gồm khi trạng thái hiện tại được lưu.

Ngoài ra, mọi thay đổi cho phép nội suy (tức là chứa các trạng thái trung gian, chẳng hạn như các thay đổi về kích thước) đều được tạo ảnh động trong thời lượng được chỉ định. Các thay đổi không có bước trung gian (chẳng hạn như hộp chú giải mô tả đang mở hoặc đóng) chỉ được cập nhật vào cuối thời lượng được chỉ định. Nếu bạn không chỉ định thời lượng, thì quá trình cập nhật sẽ diễn ra ngay lập tức (giá trị mặc định của <gx:duration>0.0).

Ngoài những điểm khác biệt nêu trên, Cập nhật trong phần tử <gx:AnimatedUpdate> hoạt động giống như Cập nhật trong <NetworkLinkControl>. Bạn có thể dùng biểu tượng này để thay đổi kích thước, vị trí và giao diện của điểm đánh dấu; thêm lớp phủ hoặc mô hình trên mặt đất; và sử dụng phần tử <gx:balloonVisibility> để bật/tắt bong bóng thông tin.

<gx:AnimatedUpdate> và tiến trình tham quan

Các bản cập nhật động sẽ chạy song song với dòng thời gian, tức là chuyến tham quan sẽ tiếp tục đến chuyến lưu diễn gốc tiếp theo trong danh sách phát, trong khi đang cập nhật ảnh động. <gx:duration> kiểm soát khoảng thời gian cần thiết để quá trình cập nhật diễn ra, nhưng không trì hoãn chuyến tham quan gốc tiếp theo.

Để cho phép hoàn tất quá trình cập nhật ảnh động trước khi diễn ra hành động tiếp theo, hãy chèn <gx:Wait>, với thời lượng bằng với thời lượng cập nhật, giữa bản cập nhật ảnh động và dữ liệu gốc tham quan sau đây.

Ngoài ra, một nội dung cập nhật dạng ảnh động sẽ bị cắt bớt nếu thời lượng của nội dung đó vượt quá thời lượng của phần tử <gx:FlyTo> hoặc <gx:Wait> cuối cùng. Bạn có thể thay đổi các giá trị <gx:duration> thích hợp hoặc chèn thêm một phần tử <gx:Wait> vào cuối danh sách phát để có thời gian cập nhật ảnh động hoàn tất.

Để biết thêm thông tin về tiến trình, hãy đọc Tiến trình tham quan ở trên.

Ví dụ:

Đoạn mã sau đây cho thấy sự thay đổi về kích thước của một biểu tượng dấu vị trí cụ thể, từ tỷ lệ 1.0 đến tỷ lệ 10.0. Thay đổi này diễn ra trong hơn 6,5 giây, trong đó biểu tượng dần mở rộng từ kích thước ban đầu đến kích thước cuối cùng.

Vui lòng lưu ý việc bao gồm một dữ liệu gốc <gx:Wait> vào cuối chuyến tham quan. Bản cập nhật ảnh động không tự mở một chuyến tham quan - chỉ dữ liệu gốc về chuyến tham quan kiểu bộ sách xác định thời lượng của chuyến lưu diễn. Vì lý do này, thời gian chờ 2,4 giây đã được chèn vào. Kết hợp với FlyTo 4,1 giây, Chờ cho thời gian cập nhật hoàn tất trước khi chuyến tham quan kết thúc.

animatedupdate_example.SSH

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

Thêm âm thanh

Tệp âm thanh có thể được đưa vào các chuyến tham quan và phát bất cứ lúc nào bằng phần tử <gx:SoundCue>. Phần tử con <href> chỉ định tệp âm thanh. Các định dạng được hỗ trợ phụ thuộc vào codec được cài đặt trên hệ thống của bạn, bao gồm nhưng không giới hạn ở:

  • mp3
  • aac

Bạn chưa chỉ định thời lượng.

Các tệp âm thanh phát song song với tiến trình chính, nghĩa là danh sách phát sẽ chuyển sang(các) video gốc tiếp theo trong khi tệp âm thanh đang phát. Đọc Tiến trình tham quan để biết thêm thông tin. Lưu ý rằng, tương tự như các bản cập nhật ảnh động, tệp âm thanh không mở chuyến tham quan - chỉ dữ liệu gốc tham quan kiểu chuỗi xác định thời lượng của chuyến tham quan. Nếu chuyến tham quan kết thúc trước khi tệp âm thanh hoàn tất thì tệp âm thanh sẽ ngừng phát.

Đang phát nhiều tệp âm thanh

Có thể phát nhiều tệp âm thanh cùng một lúc – Google Earth sẽ kết hợp các tệp này với nhau. Điều này rất hữu ích trong trường hợp tệp nhạc nền được tải vào đầu chuyến lưu diễn và bản lồng tiếng được cung cấp tại các điểm cụ thể trong suốt chuyến lưu diễn.

Cho phép hoàn tất tệp âm thanh trước khi phát bản gốc

Nếu bạn muốn chuyến tham quan đợi trong khi tệp âm thanh được phát, hãy thêm phần tử <gx:Wait> ngay sau nguyên gốc <gx:SoundCue>. <gx:Wait> chỉ định lượng thời gian (tính bằng giây) mà chuyến tham quan sẽ chờ trước khi tiếp tục xem dữ liệu gốc tiếp theo.

Tệp âm thanh không thể tiếp tục phát sau khi kết thúc chuyến tham quan. Bạn có thể chờ để kéo dài thời gian lưu diễn trong khi tệp âm thanh phát xong.

Ví dụ:

Ví dụ về chuyến tham quan dưới đây dài 15 giây, được xác định theo tổng thời lượng <gx:FlyTo><gx:Wait>. Đoạn âm thanh đầu tiên có thời lượng 15 giây và phát trong toàn bộ thời gian diễn ra chuyến tham quan. Tệp thứ hai được kích hoạt trong 5 giây, được trộn với tệp đầu tiên và phát trong 10 giây. Bạn cần <gx:Wait> để kéo dài chuyến tham quan để các đoạn âm thanh có đủ thời gian hoàn tất.

audiocue_example.SSH

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

Bật/tắt hộp chú giải mô tả

Bạn có thể mở hoặc đóng bong bóng mô tả của dấu vị trí trong một chuyến tham quan bằng cách sử dụng <gx:balloonVisibility> trong bản cập nhật ảnh động. Các thay đổi về khả năng hiển thị bong bóng sẽ được thực hiện khi kết thúc thời lượng được chỉ định bất kỳ - chúng sẽ không được tạo ảnh động trong thời gian chỉ định. Nếu bạn bỏ qua giá trị <gx:duration>, giá trị mặc định sẽ là 0.0 (hộp chú giải sẽ mở hoặc đóng ngay lập tức).

Ví dụ:

BubbleVisibility_tourexample.SSH

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

Kết hợp hình ảnh trong quá khứ

Nếu người dùng đã bật hình ảnh lịch sử trong ứng dụng của họ, thì chuyến tham quan của bạn có thể chỉ định ngày lấy hình ảnh. Để chỉ định ngày hiển thị hình ảnh, hãy thêm một phần tử <gx:TimeStamp> vào AbstractView. Lưu ý rằng <gx:TimeStamp> cũng ảnh hưởng đến KML dựa trên thời gian ánh nắng mặt trời.

Ngày xác định gần đây nhất sẽ được dùng cho tất cả hình ảnh tiến hành.

Ví dụ:

Historyimagery_example.sftp

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

Các vấn đề đã biết

Ứng dụng Google Earth hiện không hoàn toàn tuân thủ việc tham quan KML. Một số vấn đề đã biết được liệt kê bên dưới; những vấn đề này có thể được khắc phục trong các bản phát hành sắp tới.

  • Các phần tử <gx:AnimatedUpdate><gx:TourControl> sẽ phá vỡ đường cong được tạo bởi một loạt các FlyTo mượt mà. Các điểm FlyTo ở một trong hai bên của các phần tử này sẽ được kết hợp với một đường dẫn tuyến tính.
  • Các tệp âm thanh được tải bằng <gx:SoundCue> sẽ tiếp tục phát trong thời gian tạm dừng do <gx:TourControl> tạo. Khi chuyến tham quan được tiếp tục, Google Earth sẽ quay lại điểm trong tệp âm thanh có thời gian tạm dừng được kích hoạt.
  • Khi sử dụng chế độ cao độ khác với chế độ tuyệt đối, đường dẫn giữa FlyTo có thể nhảy lên hoặc xuống khi máy ảnh tiến gần một điểm. Việc này là do dữ liệu địa hình đã cập nhật được tải vào máy khách. Khi máy ảnh tiến gần một điểm, thông tin về điểm đó sẽ ngày càng chi tiết hơn. Kết quả là độ cao của mặt đất bên dưới điểm có thể được cập nhật, yêu cầu sửa đổi đường dẫn đến điểm đó.

    Cơ chế ghi trong Google Earth chỉ định chế độ độ cao tuyệt đối cho tất cả các FlyTo vì lý do này. Bạn cũng nên chuyển đổi độ cao thành giá trị tuyệt đối nếu việc chỉnh sửa đường dẫn này gây cản trở cho chuyến tham quan của bạn.