我下载了Wikitude 3.1的SDK,将样本安装到我的Eclipse工作区和Gnexus上,一切正常。我将问题分成几分,以便更容易回答:
我将“onMarkerSelectedFn”方法添加到“limitingVisiblePois.js”文件中,因为我想让我的POI可点击,当点击时,会出现类似5.1示例的信息页面。我添加了方法,但它不起作用,我不明白我在哪里犯错误。 5.x样本的每个其他文件都相同。
由我编辑的“limitsVisiblePois.js”代码
var World = {
markerDrawable_idle: new AR.ImageResource("assets/marker_idle.png"),
markerDrawable_selected: new AR.ImageResource("assets/marker_selected.png"),
markerDrawable_directionIndicator: new AR.ImageResource("assets/indi.png"),
markerList: [],
// called to inject new POI data
loadPoisFromJsonData: function loadPoisFromJsonDataFn(poiData) {
PoiRadar.show();
document.getElementById("statusElement").innerHTML = 'Loading JSON objects';
var poiImage = new AR.ImageResource("img/marker.png", {
onError: World.errorLoadingImage
});
// TODO: call single POI-creation statement instead
for (var i = 0; i < poiData.length; i++) {
var singlePoi = {
//EDIT BRUS: adding the ID of each POIs
"id": poiData[i].id,
"latitude": parseFloat(poiData[i].latitude),
"longitude": parseFloat(poiData[i].longitude),
"altitude": parseFloat(poiData[i].altitude),
"title": poiData[i].name,
"description": poiData[i].description
};
World.markerList.push(new Marker(singlePoi));
}
document.getElementById("statusElement").innerHTML = 'JSON objects loaded properly';
},
// user's latest known location, accessible via userLocation.latitude, userLocation.longitude, userLocation.altitude
userLocation: null,
// location updates
locationChanged: function locationChangedFn(lat, lon, alt, acc) {
World.userLocation = {
'latitude': lat,
'longitude': lon,
'altitude': alt,
'accuracy': acc
};
},
//EDIT BRUS: Adding onMarkerSelected function
onMarkerSelected: function onMarkerSelectedFn(marker) {
// notify native environment
document.location = "architectsdk://markerselected?id=" + marker.poiData.id;
},
// called from slider.js every time the slider value changes
onSliderChanged: function onSliderChangedFn(value) {
if (value > 0) {
var valueMeters = value * 1000;
PoiRadar.setMaxDistance(valueMeters);
AR.context.scene.cullingDistance = valueMeters;
}
}
};
// forward locationChanges to custom function
AR.context.onLocationChanged = World.locationChanged;
2)我无法理解POIs latlong在哪里进行声明处理。在前面发布的相同代码中,有函数
loadPoisFromJsonData:function loadPoisFromJsonDataFn(poiData)
但我不明白如何拍摄poiData。
我在Android和phonegap中使用了最后一个3.1 SDK。
提前感谢,
亲切的问候
布鲁斯
答案 0 :(得分:1)
PhoneGap插件示例尚未与原生SDK中的示例同步。
威胁PhoneGap插件中的当前“HelloWorld”示例从Web服务请求POI数据,您指出的示例来自Android SDK,并通过"architectView.callJavaScript('loadPoisFromJsonData(...)')".
两者都使用相同的方法来解析POI数据,PhoneGap样本使用它,例如那样
// request POI data
requestDataFromServer: function requestDataFromServerFn(lat, lon) {
var serverUrl = ServerInformation.POIDATA_SERVER + "?" + ServerInformation.POIDATA_SERVER_ARG_LAT + "=" + lat + "&" + ServerInformation.POIDATA_SERVER_ARG_LON + "=" + lon + "&" + ServerInformation.POIDATA_SERVER_ARG_NR_POIS + "=20";
var jqxhr = $.getJSON(serverUrl, function(data) {
World.loadPoisFromJsonData(data);
})
.error(function(err) {
alert("JSON error occured! " + err.message);
})
.complete(function() {});
}
您可以在locationChanged实现中添加这些行以使用虚拟网络服务器中的位置(不要忘记定义'alreadyRequestedData = false;')
if (!World.alreadyRequestedData) {
World.requestDataFromServer(lat, lon);
World.alreadyRequestedData = true;
}
亲切的问候, 安德烈亚斯