2015-11-09 63 views
0

我創建了一個Android Studio項目並將Wikitude樣本(Wikitude SDK 5.0)導入到assets文件夾中。我是JavaScript和Wikitude中的新成員,但我認爲我能夠獲得GPS座標,但沒有出現POI。Wikitude POI不會在Android上顯示

對於Android上的Wikitude,您有沒有任何經驗?我如何讓POI出現?官方文件將無濟於事。 !

對不起,長源代碼,但我堅持2天現在:(你的幫助表示讚賞想不出什麼好的解決辦法

POILOCATION.js:

// implementation of AR-Experience (aka "World") 
var World = { 
// true once data was fetched 
initiallyLoadedData: false, 



// POI-Marker asset 
markerDrawable_idle: null, 

// called to inject new POI data 
loadPoisFromJsonData: function loadPoisFromJsonDataFn(poiData) { 

    /* 
     The example Image Recognition already explained how images are loaded and displayed in the augmented reality view. This sample loads an AR.ImageResource when the World variable was defined. It will be reused for each marker that we will create afterwards. 
    */ 
    World.markerDrawable_idle = new AR.ImageResource("assets/marker_idle.png"); 

    /* 
     For creating the marker a new object AR.GeoObject will be created at the specified geolocation. An AR.GeoObject connects one or more AR.GeoLocations with multiple AR.Drawables. The AR.Drawables can be defined for multiple targets. A target can be the camera, the radar or a direction indicator. Both the radar and direction indicators will be covered in more detail in later examples. 
    */ 
    var markerLocation = new AR.GeoLocation(poiData.latitude, poiData.longitude, poiData.altitude); 
    var markerImageDrawable_idle = new AR.ImageDrawable(World.markerDrawable_idle, 2.5, { 
     zOrder: 0, 
     opacity: 1.0 
    }); 

    // create GeoObject 
    var markerObject = new AR.GeoObject(markerLocation, { 
     drawables: { 
      cam: [markerImageDrawable_idle] 
     } 
    }); 

    // Updates status message as a user feedback that everything was loaded properly. 
    World.updateStatusMessage('1 place loaded'); 
}, 

updateStatusMessage: function updateStatusMessageFn(message, isWarning) { 
    var themeToUse = isWarning ? "e" : "c"; 
    var iconToUse = isWarning ? "alert" : "info"; 

    $("#status-message").html(message); 
    $("#popupInfoButton").buttonMarkup({ 
     theme: themeToUse 
    }); 
    $("#popupInfoButton").buttonMarkup({ 
     icon: iconToUse 
    }); 
}, 

// location updates, fired every time you call architectView.setLocation() in native environment 
locationChanged: function locationChangedFn(lat, lon, alt, acc) { 
    if (!World.initiallyLoadedData) { 
     // creates a poi object with a random location near the user's location 
     var poiData = { 
      "id": 1, 
      "longitude": (lon + (Math.random()/5 - 0.1)), 
      "latitude": (lat + (Math.random()/5 - 0.1)), 
      "altitude": 100.0 
     }; 

     World.loadPoisFromJsonData(poiData); 
     World.initiallyLoadedData = true; 
    } 
}, 
}; 

/* Set a custom function where location changes are forwarded to. There is  also a possibility to set AR.context.onLocationChanged to null. In this case the  function will not be called anymore and no further location updates will be  received. 
*/ 
//AR.context.onLocationChanged = World.locationChanged; 
AR.context.onLocationChanged = locationChangedFn(lat, lon, alt, acc) { 
    console.log("asdsadasdsadasasdadaello World"); 

           if (!World.initiallyLoadedData) { 
            // creates a poi object with a random location near the user's location 
            var poiData = { 
             "id": 1, 
             "longitude": (lon + (Math.random()/5 - 0.1)), 
             "latitude": (lat + (Math.random()/5 - 0.1)), 
             "altitude": 100.0 
            }; 
    world.markerDrawable_idle = new AR.ImageResource("assets/marker_idle.png"); 

             /* 
              For creating the marker a new object AR.GeoObject will be created at the specified geolocation. An AR.GeoObject connects one or more AR.GeoLocations with multiple AR.Drawables. The AR.Drawables can be defined for multiple targets. A target can be the camera, the radar or a direction indicator. Both the radar and direction indicators will be covered in more detail in later examples. 
             */ 
             var markerLocation = new AR.GeoLocation(poiData.latitude, poiData.longitude, poiData.altitude); 
             var markerImageDrawable_idle = new AR.ImageDrawable(World.markerDrawable_idle, 2.5, { 
              zOrder: 0, 
              opacity: 1.0 
             }); 

             // create GeoObject 
             var markerObject = new AR.GeoObject(markerLocation, { 
              drawables: { 
               cam: [markerImageDrawable_idle] 
              } 
             }); 

             // Updates status message as a user feedback that everything was loaded properly. 
    World.updateStatusMessage('1 place loaded'); 
     World.initiallyLoadedData = true; 
}}; 

回答

3

好吧,我找到了解決辦法: 後,我成立了一個GPS位置更新爲Android中正常的,我忘了加上「architectView.setLocation」行:

private void makeUseOfNewLocation(Location location) { 
    try { 
     architectView.setLocation(location.getLatitude(), location.getLongitude(), location.getAltitude(), location.getAccuracy()); 
     this.architectView.load("poi_1/index.html"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

現在,everyt hing完美地工作。

+0

嗨,我有同樣的問題,應用程序只是給我一個消息「試圖找到你在哪裏」。我只是運行名爲poiatlocation的示例應用程序,沒有任何更改。我可以問你在哪裏添加上面的代碼? –