移花接木(19)- 网址链接指定场景和视角并分享到社交媒体

更新 2016.5.5

假设现在有那么一种情况,你拍了几套样板间,然后这十几个点(场景)都放在一个xml里,然后,这时候客户希望在能打开地址展示第一个场景的同时,还可以按照其需求通过打开网址直接看到其他场景,例如,打开网址直接就是卫生间的马桶(恶趣味的客户)。

我们分开两种情况,一种是krpano 1.19pr3之前的版本,一种是包括pr3及之后的版本。

以下方法适用于krpano 1.19 pr3及之后版本

我们不可能因为这种需求去调整文件中scene的位置,因为这样就需要很多个xml文件,同时又要生成很多个地址,占据服务器空间。我们只需要在皮肤中做一个小小的设置。
首先,我们需要使用krpano 1.19 pr3及之后的版本,使用MAKE VTOUR 生成默认皮肤,然后在tour.xml的skin_settings中找到

我们把这个false改为true,然后就大功告成。我们来看看一个例子。打开下面的链接。

http://krpano.com/tours/paris/?skin_settings.deeplinking=true

当你打开后,当载入一个新的场景或者是用户没有进行交互超过0.5秒(idletime)时,则浏览器地址栏会自动更新为当前场景及当前视角。例如:

http://krpano.com/tours/paris/?startscene=0&startactions=lookat(31.81,1.15,120,0,0);

可以看到在地址的问号后面跟着一个startscene和startaction。有了它们就可以执行:

小问题:

在这个deeplinking的用法中,我们可以看到在地址里,startscene后面跟着的是一个数字,这是场景的index,当浏览器执行了这样的地址进入到场景后,场景的name就会被index所取代,一旦我们在这个场景时需要使用到name时,实际上获取的是其序号。这可能会带来一些数值的匹配问题。

官方为什么要采取index的形式而不是直接用name,或许是考虑到name的命名相对宽松,一些特殊字符可能会造成浏览器识别的问题,例如&。

因此我们还需要将startup这个action修改成如下:

这样的话loadscene的时候就依然是使用name。

以下方法适用于krpano 1.19 pr2及之前版本

首先,我们先来看看默认皮肤中tour.xml有这么一个startup的action。

这个action的意义就是决定开始场景是哪一个,如果你什么都不做的话,那就是第一个场景,也就是scene[0]。我们给startscene赋值,也就是不让其为空。
我们打开tour.html,确保其中传递参数的属性为true。

embedpano({swf:”tour.swf”, xml:”tour.xml”, target:”pano”, passQueryParameters:true });

接下来就是给我们的链接地址进行传参的设置了。假设你有一个地址,前面,可能他最后的几个字符就是tour.html,那么我们可以在后面加一个?

http://krpano360.com/wp-content/uploads/krpano/demo/tour.html?startscene=1&start_hlookat=20&start_vlookat=0&start_fov=90

在线演示


这里我们用问号?来开始第一个参数,如果有更多的参数需要从HTML传递到xml中的话,用&来隔开。我们的第一个参数就是startscene,我们将某个scene的name传递进去了。我们可以直接写序号。例如?startscene=2,这样的话就是scene[2],也就是第三个场景作为startscene。在本例中我们就是直接写序号index。另外我们还可以传其他参数,只要中间用&隔开即可。例如,我们传递了跟视角相关的参数,然后在startup里进行处理。

发表评论