1

我不想使用 javascript 调用从 KRPANO 检索热点。

使用以下内容,我检索未定义。

KRPANO XML 片段:

<hotspot name="spot0" style="hotspot_ani_white" ath="-25" atv="-10" />   
<hotspot name="spot1" style="hotspot_ani_white" ath="-25" atv="-10" />

通过 index.html 加载的外部 javascript 文件:

$(function() {

  var krpano = $('#krpanoSWFObject')[0];
  var spotName = 'spot0';
  curSpot = krpano.get(hotspot[spotName]);
  console.log(curSpot)

});

欢迎任何帮助。提前致谢!

4

2 回答 2

1

你离它很近。但是我不确定您是否可以在编写时获得该元素。

首先,您应该将 KRPano 插件作为对象而不是 HTML DOM 元素来获取:

    var myKRPano = $('#krpanoSWFObject'); // First way, no need of "[0]"
    var otherKRPano = document.getElementById("krpanoSWFObject"); // Another way

现在你得到了你的 JS 对象,只需调用“get”方法。但是您应该知道“get()”执行内部代码:因此您必须将您的请求作为字符串!例如,使用您自己的代码:

    var spotname = "spot0";
    var query = "hotspot['"+spotname+"']"; // i.e. "hotspot['spot0']"
    var myHotspot = myKRPano.get(query); // or myKRPano.get("hotspot['spot0']");

这将为您提供以下内容:

    Object { _type="hotspot",  DATA={...},  plugin={...},  plus...}

从那里,你可以要求

    > myHotspot.atv
      -10.5868612
    > myHotspot.name
      "spot0"

作为一般建议,在使用 KRPano 时,请不要犹豫为您的浏览器使用调试工具。然后您可以直接尝试您的代码并解决问题。如果这样做,您会看到“$('#krpanoSWKObject').get()” 已设置,而“$('#krpanoSWKObject')[0].get()” 未设置。:)

问候,

于 2016-08-16T15:02:03.537 回答
0

通过获取热点应该做什么?

如果需要通过 javascript 获取一些热点属性,可以在 xml <action>标签中调用 js 方法,直接从 xml 热点获取属性:

在javascript文件中,获取热点的athatv属性并返回一个数组

function getspotcoords(ath,atv){
  var spotcoords = [ath,atv];
  return spotcoords
}

在xml中调用<action/>标签中的函数,点击热点时触发

<hotspot name="myhotspot" onclick="myaction"/>

<action name="myaction">

  //js() method is required!
  js(getspotcoords(get(hotspot[0].ath), get(hotspot[0].atv)));

</action>

您可以以相同的方式获取热点本身,并将其存储在 javascriptfile 的变量中。希望它有效!

于 2016-03-03T13:54:28.243 回答