التجول في KML

جدول المحتويات

مقدمة

الجديد في Google Earth 5.0، تتيح الجولات تمكين الرحلات الجوية التي يتم التحكم فيها من خلال البيانات الجغرافية المكانية، بما في ذلك:

  • تحديد مدة رحلات الطيران بين المواقع
  • رحلة جوية سلسة في الماضي، بدون توقف
  • تشغيل ملفات الصوت في أوقات محددة مسبقًا خلال الجولة
  • تحديثات مؤقتة لميزات KML ضمن حدود الجولة

للمزيد من المعلومات عن الجولات من منظور عميل Google Earth، يُرجى الرجوع إلى دليل مستخدم Google Earth.

مساحة اسم الإضافة من Google

يتم تضمين عناصر KML التي تحدد الجولات في مجموعة من الامتدادات إلى معيار OGC KML، باستخدام بادئة 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> وعناصره الثانوية.

قائمة التشغيل: حاوية قائمة بالإعدادات الأساسية للجولة التي تحدّد الجولة. يمكنك إنشاء تمثيل بصري لقائمة التشغيل على طول مخطط زمني (راجع المخططات الزمنية للجولات للحصول على مزيد من المعلومات).

بنية الجولة

يتم إنشاء الجولات من خلال وضع عناصر محددة بالترتيب في ملف 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 وGIFUpdates وSoundCues. ويتم تشغيل بعض هذه الألعاب التمهيدية واحدًا تلو الآخر، في انتظار اكتمال أحد الوحدات الأولية قبل بدء التالي. وتعمل إجراءات أخرى على التوازي مع أجهزة أولية أخرى، حتى يمكن تنفيذ إجراءات متعددة في الوقت نفسه.

الإعدادات الأولية التي تحدث في السلسلة

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

يتم إجراء هذه العناصر الأولية واحدة تلو الأخرى، ويجب إكمالها بالكامل قبل انتقال قائمة التشغيل إلى أي عنصر آخر من أي نوع. ويعني ذلك أنّه لا يمكن أن يحدث سوى نوع واحد من الحلقات الأولية من نوع السلسلة (FlyTo أو Wait أو TourControl) في آنٍ واحد، ولا يمكن بدء استخدام SoundCues أو GraphUpdates إضافية أثناء إقامة المجموعة الأولية من نوع السلسلة.

البدائيات التي تحدث بالتوازي

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

وتتم مراعاة هذه العناصر الأولية عند ظهورها في قائمة التشغيل. وبعد بدئها، تنتقل قائمة التشغيل فورًا إلى المجموعة الأولية التالية، بدون انتظار اكتمال SoundCue أو GraphUpdate. ويعني هذا أن:

  • يمكن إجراء أي عدد من SoundCues و/أو المتحركة المحدثة في نفس الوقت، عن طريق تشغيلها واحدة تلو الأخرى في قائمة التشغيل
  • يمكن أن تتم إقامة برامج SoundCues و/أو الحركات المتحركة أثناء تشغيل الألعاب الأولية من نوع السلسلة (على الرغم من تعذّر بدئها أثناء تشغيل الألعاب من نوع السلسلة)

يوضّح الرسم البياني التالي هذا السلوك. انقر على الصورة للحصول على عرض أكثر تفصيلاً، بما في ذلك محتوى KML الذي يحدد كل عنصر أساسي في قائمة التشغيل.


 

يوضح الرسم البياني أن كل FlyTo يستغرق وقتًا محددًا (محدّد في عنصر <gx:duration>) حتى يكتمل. عند انقضاء الوقت فقط، تبدأ المجموعة البدائية التالية.

وعلى الجانب الآخر، يتم إجراء SoundCue بالتوازي. يبدأ الجدول الزمني التالي في المخطط الزمني الرئيسي على الفور، في نفس الوقت الذي يبدأ فيه تشغيل الملف الصوتي. ويستمر ملف الصوت حتى يتم الوصول إلى نهاية الملف، أو حتى انتهاء الجولة، أيهما يحدث أولاً. إذا انتهت الجولة قبل انتهاء الملف الصوتي، فسيتوقف تشغيل الملف الصوتي. يمكن تشغيل أي عدد من الملفات الصوتية في أي وقت، حيث يتم تحميل كل ملف في مخططه الزمني الخاص.

تعمل التحديثات المتحركة بالطريقة نفسها. وإذا تم ضبط رمز علامة موضعية على الزيادة في الحجم على مدار 5 ثوانٍ، فسيتم تنفيذ ذلك أثناء حدوث العناصر الأولية في التسلسل الزمني الرئيسي.

FlyTo وflyToMode

تنتقل الجولات من موقع إلى آخر، ويتم تحديد كل منها باستخدام عنصر <gx:FlyTo>. يحتوي هذا العنصر على AbstractView (<Camera> أو <LookAt>) الذي يحدد مكان العرض وزاويةه وارتفاعه داخل برنامج Google Earth.

بالإضافة إلى ذلك، يمكن تحديد flyToMode، الذي يخبر المتصفح بكيفية التعامل مع النقطة. قبل تقديم <gx:Tour>، كان يتم تشغيل "الجولات" في المتصفح عن طريق الانتقال من العلامة الموضعية إلى العلامة الموضعية - حيث إن سرعة الرحلة (التي تم تحديدها بواسطة المتصفح) ستكون بطيئة مع اقتراب المتصفح من العلامة الموضعية، وتنتهي بصفر السرعة قبل المتابعة إلى العلامة الموضعية التالية. لا يزال من الممكن تحديد هذا السلوك في الجولات باستخدام سمة عنصر <gx:flyToMode>bounce</gx:flyToMode>.

يتيح flyToMode سلس للطيران السلس والمتحكم فيه خلال الفضاء. يتم التحكم في السرعة بين النقاط من خلال تضمين عنصر <gx:duration>، الذي يحدد الوقت الذي يستغرقه المتصفح في الانتقال من النقطة الحالية إلى العرض المحدد التالي. تتكون رحلة الطيران غير المنقطعة من سلسلة من FlyTos مع flyToModes بسلاسة - حيث يدخل متصفح Earth السرعة والمسار المنحني بين النقاط بحيث يتم الوصول إلى كل علامة موضعية في الوقت المحدد تمامًا في KML. وعلى عكس ارتداد flyToMode، لا تصل السرعة إلى الصفر مطلقًا حتى تتعطل الرحلة بواسطة أي من الأحداث التالية:

  • في نهاية الجولة
  • نقطة مع flyToMode، أو
  • انْتِظَار

إيقاف مؤقت وتحديثات رسوم متحركة وإشارات صوتية لا تؤدي إلى إيقاف الرحلة.

انتقال إلى البداية

يتم نقل أول <gx:FlyTo> مضمن في قائمة تشغيل من المنظور الحالي للمشاهد في Google Earth. تمت ملاحظة المدة، بحيث تختلف السرعة المتجهة إلى النقطة الأولى بشكل كبير، بناءً على موقع المشاهد في Earth عند بدء الجولة. ويُوصى بأن تحتوي رسالة FlyTo الأولية هذه على 5 ثوانٍ أو أكثر وأن تكون في وضع ارتداد للحصول على أفضل تجربة مشاهدة.

إذا تم تعيين <gx:flyToMode> على سلس لأول FlyTo، ويليه FlyTos أكثر سلاسة، فسيتم اعتبار موضع العارض المبدئي كنقطة في المنحنى السلس، وسيؤثر على منحنى المسار بين النقطتين الأولى واللاحقة. وهذا يعني أن السلسلة الأولية من FlyTos السلسة ستكون مختلفة لكل مشاهد، اعتمادًا على ما كانوا يشاهدونه في برنامج Earth عند بدء الجولة. إذا كنت لا تزال تريد انتقال FlyTo إلى النقطة الأولية بشكلٍ سلس، يمكن إدراج <gx:Wait> في الرمز السياحي بعد FlyTo الأول. سيؤدي هذا إلى فصل الموضع الأولي عن بقية الجولة.

أمثلة

توضح الأمثلة التالية الفرق بين الارتداد وسلاسة flyToModes. تزور كل جولة العلامات الموضعية نفسها، ولكنها تستخدم 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>. بعد انقضاء الوقت، تستمر الجولة بالإجراء المحدد التالي في قائمة التشغيل. يؤدي الانتظار إلى إيقاف مسار الرحلة بسلاسة، بحيث تصبح حركة الكاميرا بطيئة إلى الصفر في أية نقطة تسبق وقت الانتظار مباشرةً، بغض النظر عن flyToMode.

الإيقاف مؤقتًا

يتم تحديد عمليات الإيقاف المؤقت التي يتحكم فيها المستخدم باستخدام <gx:TourControl> وعنصره الفرعي <gx:playMode>. ويحتوي الأخير على قيمة مسموح بها واحدة وهي pause. ويشبه استدعاء هذا الإجراء نقر المستخدم على زر الإيقاف المؤقت في Google Earth، ويتم إيقاف الجولة مؤقتًا في هذه النقطة، وتظل متوقفة حتى يتم النقر على الزر تشغيل. وأثناء الإيقاف المؤقت، يمكن للمستخدم التحرك في الإرادة في بيئة Earth. عندما يتم النقر على تشغيل، يتم إرجاعه إلى النقطة التي تم تعيين الإيقاف المؤقت بها في الجولة.

لا تؤدي عمليات الإيقاف المؤقت إلى إيقاف مسارات الرحلات الجوية السلسة، لذلك يتم حساب السرعة بين النقاط على جانبي الإيقاف المؤقت كما لو كان الإيقاف المؤقت غير موجود.

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

أمثلة

فيما يلي مثال على الانتظار. يتم تسجيل ملف الصوت الذي يحتوي على عشر ثوانٍ من الكلام التمهيدي. يتم إدراج انتظار لمدة عشر ثوانٍ بعد تلميح الصوت مباشرة، مما يمنع حدوث 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 ثانية، يمنح الانتظار وقتًا لإكمال التحديث قبل انتهاء الجولة.

animatedupdate_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
  • حملة التطبيقات العامة

لم يتم تحديد مدة.

يتم تشغيل الملفات الصوتية بالتوازي مع المخطط الزمني الرئيسي، وهذا يعني أنّ قائمة التشغيل تنتقل إلى الجولة أو الجولة الموسيقية التالية أثناء تشغيل ملف الصوت. اقرأ المخططات الزمنية للجولات للحصول على مزيد من المعلومات. لاحظ أنه، كما هو الحال مع التحديثات المتحركة، لا تفتح الملفات الصوتية جولة، ولا تحدد سوى طول الجولة الأولية للجولة من السلسلة طول الجولة. إذا انتهت الجولة قبل اكتمال ملف الصوت، فسيتوقف تشغيل الملف الصوتي.

تشغيل ملفات صوتية متعددة

يمكن تشغيل العديد من الملفات الصوتية في وقت واحد - سيمزج Google Earth الملفات معًا. ويفيد ذلك في الحالات التي يتم فيها تحميل ملف موسيقى خلفية في بداية الجولة، ويتم توفير التعليقات الصوتية في نقاط معينة أثناء الجولة.

السماح بإكمال ملف صوتي قبل تشغيل المجموعة الأولية التالية

إذا كنت تريد أن تنتظر الجولة أثناء تشغيل ملف صوتي، يمكنك تضمين عنصر <gx:Wait> مباشرة بعد العنصر الأولي لـ <gx:SoundCue>. يحدد <gx:Wait> بالثواني الوقت الذي يجب أن تنتظره الجولة قبل المتابعة إلى الرحلة الأولية التالية.

لا يمكن متابعة تشغيل ملف صوتي بعد نهاية جولة. ويمكن استخدام فترة انتظار لإطالة عمر جولة أثناء انتهاء تشغيل ملف صوتي.

مثال

تبلغ مدة الجولة النموذجية أدناه 15 ثانية، ويتم تحديدها من خلال المدة المجمّعة التي تبلغ <gx:FlyTo> و<gx:Wait>. تبلغ مدة المقطع الصوتي الأول 15 ثانية، ويتم تشغيله طوال مدة الجولة بالكامل. يتم تسجيل الملف الثاني لمدة 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 (سيتم فتح البالون أو إغلاقه على الفور).

مثال

balloonvisibility_tourexample.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 سلسة. سيتم ضم نقاط FlyTo على أي من جانبي هذه العناصر في مسار خطي.
  • يستمر تشغيل الملفات الصوتية التي تم تحميلها باستخدام <gx:SoundCue> أثناء فترة إيقاف مؤقت بدأها <gx:TourControl>. عند استئناف الجولة، سيتخطى Google Earth مرة أخرى إلى النقطة في الملف الصوتي الذي تم تشغيل الإيقاف المؤقت عنده.
  • عند استخدام أوضاع الارتفاع بخلاف الاتجاه المطلق، قد يقفز المسار بين FlyTos لأعلى أو لأسفل مع اقتراب الكاميرا من نقطة ما. ويرجع ذلك إلى تحميل بيانات التضاريس المحدَّثة في البرنامج، وعندما تقترب الكاميرا من نقطة، تصبح المعلومات المتعلقة بهذه النقطة أكثر تفصيلاً. ونتيجة لذلك، قد يتم تحديث ارتفاع الأرض أسفل النقطة، مما يتطلب تصحيحًا في المسار إلى تلك النقطة.

    تحدّد آلية التسجيل في Google Earth أوضاع الارتفاع المطلق لجميع أحداث FlyTos لهذا السبب. يجب أيضًا تحويل الارتفاعات إلى القيم المطلقة إذا كانت تصحيحات المسارات هذه تتداخل مع الجولة.