gpt4 book ai didi

json - 根据json列表动态显示xml热点列表(for krpano)

转载 作者:数据小太阳 更新时间:2023-10-29 02:29:15 25 4
gpt4 key购买 nike

一个关于 xml/krpano 的新手问题,

我有一个要动态加载到 XML 中的 json 项目列表 <hotspots> .我可以在 JavaScript 中循环遍历每个项目,但我不知道如何在 XML 中执行相同的循环!

看看这张图:想象一下,每个带有图像的矩形都是 JSON 列表中的一项。您看到的每个矩形都是一个 <hotspot> .现在这三个热点被硬编码到 XML 文件中,但我想根据存在的 JSON 列表项数量动态加载热点。 Imagine that each rectangle with an image is one item in a JSON list. Each rectangle you see is a <code><hotspot></code>. Right now these three hotspots are hardcoded into the XML file, but I want to dynamically load hotspots based on how many JSON list items exist.

这是一个热点。如果我的 json 列表有 16 个项目,我希望有 16 个热点待加载。

<!--* video image thumbnail *-->
<hotspot name="start" distorted="true"
url="/panorama/%$panoId%/thumb.png"
ath="0" atv="0"
ox="0" oy="36"
vr_timeout="2000"
zorder="99"
scale="0.8"
onclick="changepano( loadscene(video_scene, null, MERGE|KEEPVIEW|KEEPMOVING, BLEND(1)); );"
alpha="0.0"
onloaded="if(vr_start_done === true, removehotspot(start); start_vr(); , tween(alpha,1); );"
/>

最佳答案

您的问题是关于从 JSON 列表在 KRPano 中动态生成热点。

如果您想从 KRPano XML 文件(假设是从 KRPano)读取 JSON,或者如果您希望使用 Javascript 要求 KRPano 生成热点,我不太清楚您写问题的方式。

这是两种完全不同的方式:)

因为我很懒,而且我想你想在 JS 中处理 JSON,所以我选择了这个解决方案......

从 Javascript 加载 JSON 文件

您的 KRPano 项目应该看起来像一个核心 HTML 文件,呈现 Javascript 以嵌入 KRPano 插件。

在那里,您可以在您的 HTML 中声明一个脚本内容,您将在其中解析您的 JSON 内容并要求 KRPano 生成一个热点。当您确定 KRPano 准备就绪时,应该调用此方法,或者在 KRPano 准备就绪时使用“onready”属性从 KRPano 调用它。

myHotspotList.json 内容:

var myHotspotList = [
{
name: "myFirstHotspot",
atv: 15.0,
ath: 56.5686,
url: "myHotspotImage.jpg"
}
];

tour.html 内容:

<html>
...
<script url="myHotspotList.json'></script>
<script>
function generateHotspots() {
// First, we get the KRPano plugin
var myKRPano = document.getElementById('krpanoSWFObject');
// Now we parse the JSON object
for(var idx in myHotspotList) {
// Get the current Hotspot data
var currHotspot = myHotspotList[idx];

// Ask KRPano to create a hotspot with our current name
myKRPano.call("addhotspot('"+ currHotspot.name +"');");

// Now set various attributes to this hotspot
myKRPano.call("set(hotpost['"+ currHotspot.name +"'].atv, "+currHotspot.atv+");");
myKRPano.call("set(hotpost['"+ currHotspot.name +"'].ath, "+currHotspot.ath+");");
myKRPano.call("set(hotpost['"+ currHotspot.name +"'].url, '"+currHotspot.url+"');");
}
}
</script>
...
// When you ask for pano creation, give your generation method as callback
embedpano({target:"krpanoDIV", onready:generateHotspots});
...
</html>

我希望这对您有所帮助,您已经掌握了调用 JSON 对象属性和所有内容的诀窍。

问候

关于json - 根据json列表动态显示xml热点列表(for krpano),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35135443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com