Browse Source

三维模型加载,飞行漫游

username 3 years ago
parent
commit
78bf531a12

+ 1 - 0
package.json

@@ -24,6 +24,7 @@
     "normalize.css": "7.0.0",
     "nprogress": "0.2.0",
     "ol": "^6.6.0",
+    "ol-plot": "^3.0.0",
     "path-to-regexp": "2.4.0",
     "q": "^1.5.1",
     "qs": "^6.9.0",

+ 767 - 0
public/systemData/flyPath.fpf

@@ -0,0 +1,767 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<SceneRoute xmlns="http://www.supermap.com.cn/ugc60">
+<route name="飞行路线_1" speed="203.053278055556" lineType="0" showroutestop="True" showrouteline="True" altitudefree="False" headingfree="False" tiltfree="False" flycircle="True" alongline="False">
+<style>
+<geostyle3d>
+<linecolor>RGBA(147,112,219,255)</linecolor>
+<linewidth>2</linewidth>
+<altitudeMode>Absolute</altitudeMode>
+<bottomAltitude>0.00</bottomAltitude>
+</geostyle3d>
+</style>
+<routestop name="Stop1" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.567851</longitude>
+<latitude>29.745682000000002</latitude>
+<altitude>80</altitude>
+<heading>114.7326235386458</heading>
+<tilt>60.184802067956348</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop2" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.568725</longitude>
+<latitude>29.744691</latitude>
+<altitude>80</altitude>
+<heading>114.7326235386458</heading>
+<tilt>60.184802067956348</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop3" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.56970200000001</longitude>
+<latitude>29.743750000000002</latitude>
+<altitude>80</altitude>
+<heading>114.7326235386458</heading>
+<tilt>60.184802067956348</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop4" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.57119</longitude>
+<latitude>29.742293000000004</latitude>
+<altitude>80</altitude>
+<heading>114.7326235386458</heading>
+<tilt>60.184802067956348</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop5" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.572817</longitude>
+<latitude>29.740409000000003</latitude>
+<altitude>80</altitude>
+<heading>114.7326235386458</heading>
+<tilt>60.184802067956348</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop6" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.57363100000001</longitude>
+<latitude>29.739011000000001</latitude>
+<altitude>80</altitude>
+<heading>114.73483841425043</heading>
+<tilt>60.19101880468628</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop7" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.573393</longitude>
+<latitude>29.737345999999995</latitude>
+<altitude>80</altitude>
+<heading>114.73483841425043</heading>
+<tilt>60.19101880468628</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop8" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.57321399999999</longitude>
+<latitude>29.736348</latitude>
+<altitude>80</altitude>
+<heading>114.73570632538245</heading>
+<tilt>60.19440558231053</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop9" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.57376499999999</longitude>
+<latitude>29.734666000000004</latitude>
+<altitude>80</altitude>
+<heading>114.73570632538245</heading>
+<tilt>60.19440558231053</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop10" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.57498</longitude>
+<latitude>29.733547999999999</latitude>
+<altitude>80</altitude>
+<heading>114.73570632538245</heading>
+<tilt>60.19440558231053</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop11" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.57630899999999</longitude>
+<latitude>29.735103000000002</latitude>
+<altitude>80</altitude>
+<heading>114.73570428183841</heading>
+<tilt>60.1944055823109</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop12" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.578851</longitude>
+<latitude>29.733414000000003</latitude>
+<altitude>80</altitude>
+<heading>114.73570428183841</heading>
+<tilt>60.1944055823109</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop13" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.57959</longitude>
+<latitude>29.734607</latitude>
+<altitude>80</altitude>
+<heading>114.73570428183841</heading>
+<tilt>60.1944055823109</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop14" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.580224</longitude>
+<latitude>29.735620000000004</latitude>
+<altitude>80</altitude>
+<heading>114.73570428183841</heading>
+<tilt>60.1944055823109</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop15" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.58099</longitude>
+<latitude>29.737164000000003</latitude>
+<altitude>80</altitude>
+<heading>114.73570428183841</heading>
+<tilt>60.1944055823109</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop16" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.581515</longitude>
+<latitude>29.738187999999997</latitude>
+<altitude>80</altitude>
+<heading>114.73849543338149</heading>
+<tilt>60.198824873842234</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop17" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.581988</longitude>
+<latitude>29.739516999999999</latitude>
+<altitude>80</altitude>
+<heading>114.73849543338149</heading>
+<tilt>60.198824873842234</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop18" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.58311399999999</longitude>
+<latitude>29.740806000000003</latitude>
+<altitude>80</altitude>
+<heading>114.73686285579024</heading>
+<tilt>60.194821729386071</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop19" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.58236100000001</longitude>
+<latitude>29.741541000000002</latitude>
+<altitude>80</altitude>
+<heading>114.73686285579024</heading>
+<tilt>60.194821729386071</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop20" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.583538</longitude>
+<latitude>29.743390000000002</latitude>
+<altitude>80</altitude>
+<heading>114.73686285579024</heading>
+<tilt>60.194821729386071</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop21" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.58476899999999</longitude>
+<latitude>29.745646000000004</latitude>
+<altitude>80</altitude>
+<heading>114.73565040821477</heading>
+<tilt>60.19157743680281</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop22" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.582549</longitude>
+<latitude>29.747468000000001</latitude>
+<altitude>80</altitude>
+<heading>114.73565040821477</heading>
+<tilt>60.19157743680281</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop23" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.58074100000002</longitude>
+<latitude>29.746503000000004</latitude>
+<altitude>80</altitude>
+<heading>114.73565040821477</heading>
+<tilt>60.19157743680281</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop24" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.57944700000002</longitude>
+<latitude>29.746752000000001</latitude>
+<altitude>80</altitude>
+<heading>114.73565040821477</heading>
+<tilt>60.19157743680281</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop25" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.57731800000002</longitude>
+<latitude>29.747284000000001</latitude>
+<altitude>80</altitude>
+<heading>114.73357996399967</heading>
+<tilt>60.187780874825329</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop26" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.57450700000001</longitude>
+<latitude>29.748023999999997</latitude>
+<altitude>80</altitude>
+<heading>114.73357996399967</heading>
+<tilt>60.187780874825329</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop27" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.57254399999999</longitude>
+<latitude>29.748256999999999</latitude>
+<altitude>80</altitude>
+<heading>114.73150493401785</heading>
+<tilt>60.183787641260331</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop28" speed="83.333333" excluded="False" viewType="camera">
+<camera>
+<longitude>103.569867</longitude>
+<latitude>29.746012</latitude>
+<altitude>80</altitude>
+<heading>114.73003814827776</heading>
+<tilt>60.180529556263089</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+<routestop name="Stop29" speed="0" excluded="False" viewType="camera">
+<camera>
+<longitude>103.56791200000001</longitude>
+<latitude>29.745674999999999</latitude>
+<altitude>80</altitude>
+<heading>114.73433480003018</heading>
+<tilt>60.189566433111843</tilt>
+<altitudeMode>Absolute</altitudeMode>
+</camera>
+<style>
+<geostyle3d>
+<icon/>
+<markersize>4.8</markersize>
+<markericonscale>1</markericonscale>
+<markercolor>RGBA(255,255,255,255)</markercolor>
+</geostyle3d>
+</style>
+<setting>
+<turnTime>1.5</turnTime>
+<turnSlowly>False</turnSlowly>
+<stopPlayMode>StopPause</stopPlayMode>
+<autoPlay>False</autoPlay>
+<pauseTime>0</pauseTime>
+<angularSpeed>1</angularSpeed>
+</setting>
+</routestop>
+</route>
+</SceneRoute>

+ 13 - 4
src/views/MapView/index.vue

@@ -5,11 +5,17 @@
       <el-container :style="{ height: 'calc(100% - ' + footer_height + ')', width: '100%' }">
         <el-main>
           <div id="antherPanel" style="display: none;width: 50%;height: 100%;float: left;border-right: 3px solid #ccc;" />
+
+          <!-- 三维视图 -->
           <div id="sceneView" ref="sceneView" class="sceneView" v-show="false" :style="{ width: '0'}">
             <!-- 23D视图切换 -->
             <viewChange />
             <measureMent3D v-if="viewer" :viewer="viewer" />
+            <sceneFly v-if="viewer" :viewer="viewer" />
+
           </div>
+
+          <!-- 二维视图 -->
           <div id="mapView" ref="mapView" class="mapView" :style="{ marginRight:'0', height: '100%' }">
             <div v-show="labelShow" id="mapLabel">
               <img src="./images/mapLabel.png" />
@@ -135,7 +141,8 @@ import MapToggle from '@/views/MapView/mapViewTools/basicMapToggle';
 import toolBox from '@/views/MapView/mapViewTools/toolBox';
 import viewChange from '@/views/MapView/mapViewTools/viewChange';
 import measureMent3D from '@/views/MapView/mapViewTools/measureMent3D';
-import MapCompass from '@/views/MapView/mapViewTools/mapCompass'
+import sceneFly from '@/views/MapView/mapViewTools/sceneFly';
+import MapCompass from '@/views/MapView/mapViewTools/mapCompass';
 
 // 公共函数
 import commonFunction from '@/views/currentSystem/commonFunction/commonFunction'
@@ -158,7 +165,8 @@ export default {
     viewChange,
     measureMent3D,
     FeatureEdit,
-    MapCompass
+    MapCompass,
+    sceneFly
   },
   data() {
     return {
@@ -501,7 +509,7 @@ export default {
         //实现对应的移动结束操作
         // console.log("相机移动", this.viewer.camera.computeViewRectangle(), this.map.getView().calculateExtent(this.map.getSize()))
         // if (this.mapView2D == true) return false
-        this.viewChangeStep--;
+        this.viewChangeStep--
         if (this.viewChangeStep === 1) {
           const cameraExtent = this.viewer.camera.computeViewRectangle()
           let viewExtent = [
@@ -523,7 +531,8 @@ export default {
         // const lat = cartographic.latitude * (180 / Math.PI)
         // const height = cartographic.height
         // console.log("相机移动", lon, lat, height)
-      });
+      })
+      this.viewer.scene.open(this.config.iServerUrl.sceneService[0])
     },
     /**
      * 视图联动二维地图变化

+ 2 - 2
src/views/MapView/map.config.js

@@ -95,8 +95,8 @@ export const mapConfig = {
 
     ],
     // 三维场景
-    sceneService:[
-
+    sceneService: [
+      'http://192.168.2.242:8090/iserver/services/3D-pipeline3D/rest/realspace'
     ],
     // 路径分析服务
     netWorkUrl: "http://192.168.2.242:8090/iserver/services/transportationAnalyst-kxcNet/rest/networkanalyst/kxcNet_Network@kxcNet",

+ 180 - 180
src/views/MapView/mapViewTools/measureMent3D.vue

@@ -1,181 +1,181 @@
-<template>
-  <!-- 底图切换 -->
-  <div class="measure3D-btn" title="测量">
-    <el-popover v-model="visible" placement="left" width="110px" trigger="hover" popper-class="measure3D">
-      <span class="measure-item iconfont iconclgj" @click="distenceMeasure(null)">距离测量</span>
-      <span class="measure-item iconfont iconmianji" @click="areaMeasure(null)">面积测量</span>
-      <span class="measure-item iconfont icon-tiedijuli" @click="distenceMeasure(0)">贴地测距</span>
-      <span class="measure-item iconfont icon-tiedicemian" @click="areaMeasure(0)">贴地测面</span>
-      <span class="measure-item iconfont icon-gaodu" @click="heightMeasure">高度测量</span>
-      <span class="measure-item iconfont icon-qingchu" @click="clearMeasure">清除测量</span>
-      <div class="btn iconfont iconjulianggongju" slot="reference"></div>
-    </el-popover>
-  </div>
-</template>
-
-<script>
-const Cesium = window.Cesium; // 获取Cesium
-export default {
-  props: ["viewer"],
-  data() {
-    return {
-      visible: false,
-      /**
-       * 空间模式 1为贴地测量
-       */
-      clampMode: 0,
-      /**
-       * 测量组件
-       */
-      measureHandler: null
-    }
-  },
-  mounted() {
-    console.log("测量组件:", this.handlerDis)
-  },
-  methods: {
-    /**
-     * 空间距离测量
-     */
-    distenceMeasure(type) {
-      this.clearMeasure()
-      this.clampMode = type == 0 ? 1 : 0
-      //初始化测量距离
-      this.measureHandler = new Cesium.MeasureHandler(this.viewer, Cesium.MeasureMode.Distance, this.clampMode);
-      this.measureHandler.measureEvt.addEventListener(result => {
-        let dis = Number(result.distance);
-        let distance = dis > 1000 ? (dis / 1000).toFixed(2) + 'km' : dis.toFixed(2) + 'm';
-        this.measureHandler.disLabel.text = '距离:' + distance;
-      });
-      this.listenMeature()
-      this.measureHandler.activate()
-      this.visible = false
-    },
-    /**
-     * 空间面积测量
-     */
-    areaMeasure(type) {
-      this.clearMeasure()
-      this.clampMode = type == 0 ? 1 : 0
-      //初始化测量面积
-      this.measureHandler = new Cesium.MeasureHandler(this.viewer, Cesium.MeasureMode.Area, this.clampMode);
-      this.measureHandler.measureEvt.addEventListener(result => {
-        var mj = Number(result.area);
-        var area = mj > 1000000 ? (mj / 1000000).toFixed(2) + 'km²' : mj.toFixed(2) + '㎡'
-        this.measureHandler.areaLabel.text = '面积:' + area;
-      });
-      this.listenMeature()
-      this.measureHandler.activate()
-      this.visible = false
-    },
-    /**
-    * 角度测量
-    */
-    measureAngle(type) {
-      this.clearMeasure()
-      this.clampMode = type == 0 ? 1 : 0
-      //初始化测量距离
-      this.measureHandler = new Cesium.MeasureHandler(this.viewer, Cesium.MeasureMode.Distance, this.clampMode);
-      this.measureHandler.measureEvt.addEventListener(result => {
-        let dis = Number(result.distance);
-        let distance = dis > 1000 ? (dis / 1000).toFixed(2) + 'km' : dis.toFixed(2) + 'm';
-        this.measureHandler.disLabel.text = '距离:' + distance;
-      });
-      this.listenMeature()
-      this.measureHandler.activate()
-      this.visible = false
-    },
-    /**
-     * 空间高度测量
-     */
-    heightMeasure() {
-      this.clearMeasure()
-      //初始化测量高度
-      this.measureHandler = new Cesium.MeasureHandler(this.viewer, Cesium.MeasureMode.DVH);
-      this.measureHandler.measureEvt.addEventListener(result => {
-        let distance = result.distance > 1000 ? (result.distance / 1000).toFixed(2) + 'km' : result.distance + 'm';
-        let vHeight = result.verticalHeight > 1000 ? (result.verticalHeight / 1000).toFixed(2) + 'km' : result.verticalHeight + 'm';
-        let hDistance = result.horizontalDistance > 1000 ? (result.horizontalDistance / 1000).toFixed(2) + 'km' : result.horizontalDistance + 'm';
-        this.measureHandler.disLabel.text = '空间距离:' + distance;
-        this.measureHandler.vLabel.text = '垂直高度:' + vHeight;
-        this.measureHandler.hLabel.text = '水平距离:' + hDistance;
-      });
-      this.listenMeature()
-      this.measureHandler.activate()
-      this.visible = false
-    },
-    /**
-     * 添加测量动作监听事件,改变光标样式
-     */
-    listenMeature() {
-      this.measureHandler.activeEvt.addEventListener(isActive => {
-        if (isActive == true) {
-          this.viewer.enableCursorStyle = false;
-          this.viewer._element.style.cursor = 'crosshair';
-        }
-        else {
-          this.viewer.enableCursorStyle = true;
-          this.viewer._element.style.cursor = '';
-        }
-      });
-    },
-    /**
-     * 清除测量
-     */
-    clearMeasure() {
-      if (this.measureHandler != null) {
-        this.measureHandler.deactivate()
-        this.measureHandler.clear()
-        this.measureHandler = null
-      }
-      this.visible = false
-    }
-  }
-}
-</script>
-
-<style lang="scss" scoped>
-.measure3D-btn {
-  z-index: 999;
-  width: 32px;
-  height: 32px;
-  border-radius: 2px;
-  position: absolute;
-  bottom: 210px;
-  right: 15px;
-  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.2);
-  .btn {
-    width: 100%;
-    height: 100%;
-    line-height: 32px;
-    text-align: center;
-    background-color: #fff;
-    border-radius: 2px;
-    font-size: 20px;
-    color: #444444;
-    cursor: pointer;
-    &:hover {
-      color: #006eb8;
-    }
-  }
-}
-.measure-item {
-  display: block;
-  width: 100%;
-  height: 36px;
-  line-height: 36px;
-  text-align: center;
-  font-size: 16px;
-  border: none;
-  margin: 0 !important;
-  background-color: #fff;
-  cursor: pointer;
-  &:hover {
-    color: #6498ed;
-    background-color: #eaf1fd;
-  }
-  &::before {
-    margin-right: 5px;
-  }
-}
+<template>
+  <!-- 底图切换 -->
+  <div class="measure3D-btn" title="测量">
+    <el-popover v-model="visible" placement="left" width="110px" trigger="hover" popper-class="measure3D">
+      <span class="measure-item iconfont iconclgj" @click="distenceMeasure(null)">距离测量</span>
+      <span class="measure-item iconfont iconmianji" @click="areaMeasure(null)">面积测量</span>
+      <span class="measure-item iconfont icon-tiedijuli" @click="distenceMeasure(0)">贴地测距</span>
+      <span class="measure-item iconfont icon-tiedicemian" @click="areaMeasure(0)">贴地测面</span>
+      <span class="measure-item iconfont icon-gaodu" @click="heightMeasure">高度测量</span>
+      <span class="measure-item iconfont icon-qingchu" @click="clearMeasure">清除测量</span>
+      <div class="btn iconfont iconjulianggongju" slot="reference"></div>
+    </el-popover>
+  </div>
+</template>
+
+<script>
+const Cesium = window.Cesium; // 获取Cesium
+export default {
+  props: ["viewer"],
+  data() {
+    return {
+      visible: false,
+      /**
+       * 空间模式 1为贴地测量
+       */
+      clampMode: 0,
+      /**
+       * 测量组件
+       */
+      measureHandler: null
+    }
+  },
+  mounted() {
+    console.log("测量组件:", this.handlerDis)
+  },
+  methods: {
+    /**
+     * 空间距离测量
+     */
+    distenceMeasure(type) {
+      this.clearMeasure()
+      this.clampMode = type == 0 ? 1 : 0
+      //初始化测量距离
+      this.measureHandler = new Cesium.MeasureHandler(this.viewer, Cesium.MeasureMode.Distance, this.clampMode);
+      this.measureHandler.measureEvt.addEventListener(result => {
+        let dis = Number(result.distance);
+        let distance = dis > 1000 ? (dis / 1000).toFixed(2) + 'km' : dis.toFixed(2) + 'm';
+        this.measureHandler.disLabel.text = '距离:' + distance;
+      });
+      this.listenMeature()
+      this.measureHandler.activate()
+      this.visible = false
+    },
+    /**
+     * 空间面积测量
+     */
+    areaMeasure(type) {
+      this.clearMeasure()
+      this.clampMode = type == 0 ? 1 : 0
+      //初始化测量面积
+      this.measureHandler = new Cesium.MeasureHandler(this.viewer, Cesium.MeasureMode.Area, this.clampMode);
+      this.measureHandler.measureEvt.addEventListener(result => {
+        var mj = Number(result.area);
+        var area = mj > 1000000 ? (mj / 1000000).toFixed(2) + 'km²' : mj.toFixed(2) + '㎡'
+        this.measureHandler.areaLabel.text = '面积:' + area;
+      });
+      this.listenMeature()
+      this.measureHandler.activate()
+      this.visible = false
+    },
+    /**
+    * 角度测量
+    */
+    measureAngle(type) {
+      this.clearMeasure()
+      this.clampMode = type == 0 ? 1 : 0
+      //初始化测量距离
+      this.measureHandler = new Cesium.MeasureHandler(this.viewer, Cesium.MeasureMode.Distance, this.clampMode);
+      this.measureHandler.measureEvt.addEventListener(result => {
+        let dis = Number(result.distance);
+        let distance = dis > 1000 ? (dis / 1000).toFixed(2) + 'km' : dis.toFixed(2) + 'm';
+        this.measureHandler.disLabel.text = '距离:' + distance;
+      });
+      this.listenMeature()
+      this.measureHandler.activate()
+      this.visible = false
+    },
+    /**
+     * 空间高度测量
+     */
+    heightMeasure() {
+      this.clearMeasure()
+      //初始化测量高度
+      this.measureHandler = new Cesium.MeasureHandler(this.viewer, Cesium.MeasureMode.DVH);
+      this.measureHandler.measureEvt.addEventListener(result => {
+        let distance = result.distance > 1000 ? (result.distance / 1000).toFixed(2) + 'km' : result.distance + 'm';
+        let vHeight = result.verticalHeight > 1000 ? (result.verticalHeight / 1000).toFixed(2) + 'km' : result.verticalHeight + 'm';
+        let hDistance = result.horizontalDistance > 1000 ? (result.horizontalDistance / 1000).toFixed(2) + 'km' : result.horizontalDistance + 'm';
+        this.measureHandler.disLabel.text = '空间距离:' + distance;
+        this.measureHandler.vLabel.text = '垂直高度:' + vHeight;
+        this.measureHandler.hLabel.text = '水平距离:' + hDistance;
+      });
+      this.listenMeature()
+      this.measureHandler.activate()
+      this.visible = false
+    },
+    /**
+     * 添加测量动作监听事件,改变光标样式
+     */
+    listenMeature() {
+      this.measureHandler.activeEvt.addEventListener(isActive => {
+        if (isActive == true) {
+          this.viewer.enableCursorStyle = false;
+          this.viewer._element.style.cursor = 'crosshair';
+        }
+        else {
+          this.viewer.enableCursorStyle = true;
+          this.viewer._element.style.cursor = '';
+        }
+      });
+    },
+    /**
+     * 清除测量
+     */
+    clearMeasure() {
+      if (this.measureHandler != null) {
+        this.measureHandler.deactivate()
+        this.measureHandler.clear()
+        this.measureHandler = null
+      }
+      this.visible = false
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.measure3D-btn {
+  z-index: 999;
+  width: 32px;
+  height: 32px;
+  border-radius: 2px;
+  position: absolute;
+  bottom: 215px;
+  right: 15px;
+  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.2);
+  .btn {
+    width: 100%;
+    height: 100%;
+    line-height: 32px;
+    text-align: center;
+    background-color: #fff;
+    border-radius: 2px;
+    font-size: 20px;
+    color: #444444;
+    cursor: pointer;
+    &:hover {
+      color: #006eb8;
+    }
+  }
+}
+.measure-item {
+  display: block;
+  width: 100%;
+  height: 36px;
+  line-height: 36px;
+  text-align: center;
+  font-size: 16px;
+  border: none;
+  margin: 0 !important;
+  background-color: #fff;
+  cursor: pointer;
+  &:hover {
+    color: #6498ed;
+    background-color: #eaf1fd;
+  }
+  &::before {
+    margin-right: 5px;
+  }
+}
 </style>

+ 139 - 0
src/views/MapView/mapViewTools/sceneFly.vue

@@ -0,0 +1,139 @@
+<template>
+  <div class="fly-tool">
+    <div class="fly-control">
+      <span @click="play">开始</span>
+      <span @click="pause">暂停</span>
+      <span @click="stopPlay">停止</span>
+    </div>
+    <div class="fly-stop">
+      <el-row>
+        <el-col :span="5">站点:</el-col>
+        <el-col :span="19">
+          <el-select v-model="value" size="small" @change="changeStop">
+            <el-option v-for="item in stopOptions" :key="item.value" :label="item.label" :value="item.value"></el-option>
+          </el-select>
+        </el-col>
+      </el-row>
+    </div>
+    <div>
+      <el-checkbox v-model="checked1" @change="showStop">显示飞行站点</el-checkbox>
+      <el-checkbox v-model="checked2" @change="showLine">显示飞行线路</el-checkbox>
+    </div>
+  </div>
+</template>
+
+<script>
+const Cesium = window.Cesium; // 获取Cesium
+export default {
+  props: ['viewer'],
+  data() {
+    return {
+      stopOptions: [{
+        value: '选项1',
+        label: '黄金糕'
+      }],
+      value: '',
+      checked1: true,
+      checked2: true,
+      flyManager: null
+    }
+  },
+  mounted() {
+    let routes = new Cesium.RouteCollection(this.viewer.entities)
+    //添加fpf飞行文件,fpf由SuperMap iDesktop生成
+    routes.fromFile('./systemData/flyPath.fpf')
+    //初始化飞行管理
+    this.flyManager = new Cesium.FlyManager({
+      scene: this.viewer.scene,
+      routes: routes
+    })
+    //注册站点到达事件
+    this.flyManager.stopArrived.addEventListener(routeStop => {
+      routeStop.waitTime = 0 // 在每个站点处停留1s
+    })
+
+    this.flyManager.readyPromise.then(() => { // 飞行路线就绪
+      let currentRoute = this.flyManager.currentRoute;
+      currentRoute.isLineVisible = true;
+      currentRoute.isStopVisible = true;
+      //生成飞行文件中的所有站点列表
+      let allStops = this.flyManager.getAllRouteStops();
+      this.stopOptions = []
+      allStops.forEach((item, i) => {
+        this.stopOptions.push({ label: '站点' + (i + 1), value: item.index })
+      })
+    });
+  },
+  methods: {
+    /**
+     * 播放
+     */
+    play() {
+      this.flyManager.play()
+    },
+    /**
+     * 暂停
+     */
+    pause() {
+      this.flyManager.pause();
+    },
+    /**
+     * 停止
+     */
+    stopPlay() {
+      this.flyManager.stop();
+    },
+    /**
+     * 显示站点
+     */
+    showStop() {
+      this.flyManager.currentRoute.isStopVisible = this.checked1
+    },
+    /**
+     * 显示路线
+     */
+    showLine() {
+      this.flyManager.currentRoute.isLineVisible = this.checked2
+    },
+    /**
+     * 站点切换
+     */
+    changeStop(value) {
+      this.flyManager.stop()
+      let index = parseInt(value) // 站点的索引
+      let route = this.flyManager.currentRoute
+      let stop = route.get(index)
+      this.flyManager.currentStopIndex = index
+      this.flyManager.viewToStop(stop)
+    }
+  }
+}
+</script>
+
+<style lang='scss' scoped>
+.fly-tool {
+  z-index: 999;
+  width: 300px;
+  background-color: #fff;
+  opacity: 0.9;
+  position: absolute;
+  top: 20px;
+  left: 20px;
+  > div {
+    box-sizing: border-box;
+    padding: 10px;
+  }
+  .fly-control {
+    > span {
+      cursor: pointer;
+      color: #2f70d7;
+      &:hover {
+        color: #0747ad;
+      }
+    }
+  }
+  .fly-stop {
+    line-height: 32px;
+  }
+}
+</style>