在我的PhoneGap应用程序中,我使用的是Wikitude插件(5.1.1),所有的Wikitude特性都运行良好。现在,我正在更新我的插件到最新的5.3.0版本,但我们正面临一些问题,在IOS设备上的Wikitude插件功能。问题是:
当我在应用程序中加载ARView时,所有标记和雷达都会正确显示,但是当我使用AR.context.destroyAll()从ARView中销毁所有对象时,当我再次尝试在ARView上绘制雷达和制作者时,这些对象在ARView上是不可见的。我的应用程序有一个功能,我需要清除ARView中的所有标记,并使用一些过滤器重新绘制标记。
现在我发现了为什么标记和雷达在摧毁后是看不见的。
原因是" AR.ImageResource“在销毁后没有正确地加载标记和雷达。当我为AR.ImageResource添加onLoaded和onError回调时。当我们第一次加载AR世界时,我会收到对"onLoadded“回调的调用。但是当我在销毁后加载ImageResouce时,我收到了对"onError“回调的调用,错误显示它在错误的路径上找到了图像。
我使用loadARchitectWorld的AR体验URL为: var arExperienceUrl =“www/main_home_ar_view_cre.html”;
用于雷达图像资源的图像路径: www > img > wikitude_img > radar_bg.png
加载AR.ImageResource的代码:
AR.radar.background = new AR.ImageResource("img/wikitude_img/radar_bg.png", {
onLoaded : function successFn(loadedURL) {
/* Respond to successful world loading if you need to */
alert("onLoaded");
},
onError : function errorFn(error)
{
alert("onError " + error + " & " + error.message);
}});当我第一次加载AR世界时,上面的代码工作得很好。但是,在从"/www/main_home_ar_view_screen.html/img/wikitude_img/radar_bg.png",中销毁对象之后,AR.ImageResource在此路径上查找图像,因为在错误的路径上找到图像,因此没有加载图像(参见附加图像)。

我也发现这些东西:
请建议我如何用本地图像路径来解决AR.ImageResouce问题。
发布于 2016-12-06 09:15:34
要解决此问题,只需将以下代码段粘贴到主架构师.js文件的顶部
AR.__resourceUrl = function(url)
{
if (/^([a-z\d.-]+:)?\/\//i.test(url))
{
// URL contains protocol and can be considered absolute
return url;
}
// get protocol
var protocol = document.baseURI.substring(0,
document.baseURI.indexOf('/') + 2);
var uri = document.baseURI.substring(document.baseURI.indexOf('/') + 2);
// remove fragment identifier
if ( uri.indexOf('#') > 0 && uri.length > uri.indexOf('#') +1 ) {
uri = uri.substring(0, uri.lastIndexOf('#'));
// in case there was a '/' after the fragment identifier, we need to add it back again
if ( uri[uri.length - 1] !== '/' ) {
uri += '/';
}
}
// remove trailing file (edge case, this is just a domain e.g.
// www.google.com)
uri = uri.substring(0, uri.lastIndexOf('/') + 1);
var baseUrl = protocol + uri;
if (baseUrl[baseUrl.length - 1] !== '/')
baseUrl += '/';
if (url[0] === '/') {
// url references root
baseUrl = baseUrl.substring(0, baseUrl.indexOf('/', baseUrl
.indexOf('//') + 2));
}
var resourceURL = baseUrl + url;
return resourceURL;
};当我从Wikitude论坛获得这个解决方案时
https://stackoverflow.com/questions/40655226
复制相似问题