var ServerInformation = {
POIDATA_SERVER: "https://oleholehar.000webhostapp.com/",
POIDATA_SERVER_ARG_LAT: "lat",
POIDATA_SERVER_ARG_LON: "lon",
POIDATA_SERVER_ARG_NR_POIS: "nrPois"
};
/* Implementation of AR-Experience (aka "World"). */
var World = {
/* You may request new data from server periodically, however: in this sample data is only requested once. */
isRequestingData: false,
/* True once data was fetched. */
initiallyLoadedData: false,
/* Different POI-Marker assets. */
markerDrawableIdle: null,
markerDrawableSelected: null,
markerDrawableDirectionIndicator: null,
/* List of AR.GeoObjects that are currently shown in the scene / World. */
markerList: [],
/* the last selected marker. */
currentMarker: null,
/* Called to inject new POI data. */
loadPoisFromJsonData: function loadPoisFromJsonDataFn(poiData) {
/* Empty list of visible markers. */
World.markerList = [];
/* Start loading marker assets. */
World.markerDrawableIdle = new AR.ImageResource("assets/marker_idle.png", {
onError: World.onError
});
World.markerDrawableSelected = new AR.ImageResource("assets/marker_selected.png", {
onError: World.onError
});
World.markerDrawableDirectionIndicator = new AR.ImageResource("assets/indi.png", {
onError: World.onError
});
/* Loop through POI-information and create an AR.GeoObject (=Marker) per POI. */
for (var currentPlaceNr = 0; currentPlaceNr < poiData.length; currentPlaceNr++) {
var singlePoi = {
"id": poiData[currentPlaceNr].id,
"latitude": parseFloat(poiData[currentPlaceNr].latitude),
"longitude": parseFloat(poiData[currentPlaceNr].longitude),
"altitude": parseFloat(poiData[currentPlaceNr].altitude),
"title": poiData[currentPlaceNr].name,
"description": poiData[currentPlaceNr].description
};
World.markerList.push(new Marker(singlePoi));
}
World.updateStatusMessage(currentPlaceNr + ' places loaded');
},
/* Updates status message shown in small "i"-button aligned bottom center. */
updateStatusMessage: function updateStatusMessageFn(message, isWarning) {
var themeToUse = isWarning ? "e" : "c";
var iconToUse = isWarning ? "alert" : "info";
$("#status-message").html(message);
$("#popupInfoButton").buttonMarkup({
theme: themeToUse,
icon: iconToUse
});
},
/*
Location updates, fired every time you call architectView.setLocation() in native environment
Note: You may set 'AR.context.onLocationChanged = null' to no longer receive location updates in
World.locationChanged.
*/
locationChanged: function locationChangedFn(lat, lon, alt, acc) {
/* Request data if not already present. */
if (!World.initiallyLoadedData) {
World.requestDataFromServer(lat, lon);
World.initiallyLoadedData = true;
}
},
/* Fired when user pressed maker in cam. */
onMarkerSelected: function onMarkerSelectedFn(marker) {
/* Deselect previous marker. */
if (World.currentMarker) {
if (World.currentMarker.poiData.id === marker.poiData.id) {
return;
}
World.currentMarker.setDeselected(World.currentMarker);
}
/* Highlight current one. */
marker.setSelected(marker);
World.currentMarker = marker;
},
/* Screen was clicked but no geo-object was hit. */
onScreenClick: function onScreenClickFn() {
if (World.currentMarker) {
World.currentMarker.setDeselected(World.currentMarker);
}
World.currentMarker = null;
},
/*
JQuery provides a number of tools to load data from a remote origin.
It is highly recommended to use the JSON format for POI information. Requesting and parsing is done in a
few lines of code.
Use e.g. 'AR.context.onLocationChanged = World.locationChanged;' to define the method invoked on location
updates.
In this sample POI information is requested after the very first location update.
This sample uses a test-service of Wikitude which randomly delivers geo-location data around the passed
latitude/longitude user location.
You have to update 'ServerInformation' data to use your own own server. Also ensure the JSON format is same
as in previous sample's 'myJsonData.js'-file.
*/
/* Request POI data. */
requestDataFromServer: function requestDataFromServerFn(lat, lon) {
/* Set helper var to avoid requesting places while loading. */
World.isRequestingData = true;
World.updateStatusMessage('Requesting places from web-service');
/* Server-url to JSON content provider. */
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) {
World.updateStatusMessage("Invalid web-service response.", true);
World.isRequestingData = false;
})
.complete(function() {
World.isRequestingData = false;
});
},
onError: function onErrorFn(error) {
alert(error);
}
};
/* Forward locationChanges to custom function. */
AR.context.onLocationChanged = World.locationChanged;
/* Forward clicks in empty area to World. */
AR.context.onScreenClick = World.onScreenClick;
1 Comment
Wikitude Support
said
about 3 years ago
Hi,
could you please provide the following details:
Which version of the SDK are you using?
Are you using any of our Extensions (Cordova, Xamarin, Unity)? If yes, which version are you using?
What device does this happen with (model details and OS version)?
Is this happening with the sample app or in your own app? If it happens with your own app, does the sample app work on your device?
Do you get the data if you e.g. setup the request in a standard web browser?
Febri Dolar
hi, im trying to retreive POI data from web service, but i keep getting "Requesting places from web service " and the POI data won't loaded, i've read
This documentation and try it with my web server link : https://oleholehar.000webhostapp.com/, its the same format as http://example.wikitude.com/GetSamplePois/
here's my code :