2013-09-07 1 views
1

J'ai téléchargé le SDK de Wikitude 3.1, installé les samples dans mon espace de travail Eclipse et sur mon Gnexus tout fonctionne. Je divise les questions en points afin de pouvoir répondre plus facilement:wikitude 3.01: ajouter quelques fonctionnalités entre les exemples ne fonctionnait pas correctement

J'ai ajouté la méthode "onMarkerSelectedFn" dans le fichier "limitingVisiblePois.js" parce que je voulais que mes POIs puissent être cliquables et quand on clique, la page d'information apparaît comme la 5.1 exemple. J'ai ajouté la méthode mais cela ne fonctionne pas et je n'ai pas compris où je fais des erreurs. Chaque autre fichier est le même pour les exemples 5.x.

Code de "limitingVisiblePois.js" édité par moi

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) Je ne pouvais pas comprendre où coordonne les latlong POIs où declareated. Dans le même code affiché avant, il y a la fonction

loadPoisFromJsonData: fonction loadPoisFromJsonDataFn (poiData)

mais je ne comprends pas comment le poiData sont prises.

J'ai utilisé le dernier 3.1 SDK dans Android et phonegap.

merci à l'avance,

Sincères salutations

Brus

Répondre

1

PhoneGap échantillons Plugin sont pas encore en phase avec ceux du SDK natif.

Whereat l'échantillon courant « HelloWorld » dans PhoneGap Plugin demande POI-données à partir d'un webservice l'échantillon vous l'avez indiqué est du SDK Android et passe POI-données à partir d'Android natif via "architectView.callJavaScript('loadPoisFromJsonData(...)')".

Les deux font usage de la même méthode pour analyser les données POI, l'exemple PhoneGap l'utilise par exemple cette façon

// 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() {}); 
} 

Vous pouvez simplement ajouter ces lignes dans votre implémentation LocationChanged à utiliser les lieux d'un serveur Web factice (ne pas oublier de définir « alreadyRequestedData = false; »)

if (!World.alreadyRequestedData) { 
World.requestDataFromServer(lat, lon); 
World.alreadyRequestedData = true; 
} 

Meilleures salutations , Andreas

+0

Bonjour Andreas, merci pour votre réponse. J'ai ce que tu m'expliques et je vais essayer de régler mon problème. Les mêmes informations sont disponibles dans la documentation de votre site internet. Cordialement – Bebbolin

Questions connexes