2013-09-23 3 views
1

Я создал простую программу, следуя примеру POI в Wikitude. Когда я запускаю приложение, маркеры не отображаются на экране камеры. У меня такая же проблема с примером POI-приложения. Я поместил некоторые JS-оповещения в файл js внутри 'onLocationChangedFn' и 'createMarkerAtLocation', и предупреждения отображаются правильно (что, надеюсь, означает, что функции javascript вызываются должным образом. Но все же маркер не отображается на гео расположениеWikitude SDK - маркеры не отображаются в окне камеры

я вижу следующее в LogCat в Eclipse:.

09-21 11:32:50.809: D/dalvikvm(6108): GC_FOR_ALLOC freed 1255K, 29% free 8947K/12551K, paused 18ms, total 19ms 

09-21 11:32:50.839: D/dalvikvm(6108): GC_CONCURRENT freed 15K, 24% free 9561K/12551K, paused 12ms+3ms, total 33ms 

09-21 11:32:50.849: E/deviceSupported(6108): true 

09-21 11:32:50.849: I/ArchitectWebView(6108): ARchitect Build: d4452f2 

09-21 11:32:50.919: D/dalvikvm(6108): GC_CONCURRENT freed 561K, 22% free 9826K/12551K, paused 12ms+2ms, total 33ms 

09-21 11:32:50.919: D/dalvikvm(6108): WAIT_FOR_CONCURRENT_GC blocked 9ms 

09-21 11:32:50.939: D/dalvikvm(6108): GC_FOR_ALLOC freed 733K, 21% free 9920K/12551K, paused 17ms, total 17ms 
09-21 11:32:50.969: D/dalvikvm(6108): GC_CONCURRENT freed 608K, 20% free 10147K/12551K, paused 12ms+2ms, total 30ms 
09-21 11:32:50.969: D/dalvikvm(6108): WAIT_FOR_CONCURRENT_GC blocked 17ms 

09-21 11:32:51.049: E/Web Console(6108): Uncaught ReferenceError: AR is not defined at null:1 

09-21 11:32:51.109: I/Adreno200-EGL(6108): <qeglDrvAPI_eglInitialize:299>: EGL 1.4 QUALCOMM build: Nondeterministic AU_msm8625_REFS/TAGS/JB_REL_RB5_QRD_D20130228_CL3285357_release_AU (CL3285357) 

09-21 11:32:51.109: I/Adreno200-EGL(6108): Build Date: 03/01/13 Fri 

09-21 11:32:51.109: I/Adreno200-EGL(6108): Local Branch: 

09-21 11:32:51.109: I/Adreno200-EGL(6108): Remote Branch: m/refs/tags/jb_rel_rb5_qrd_D20130228 
09-21 11:32:51.109: I/Adreno200-EGL(6108): Local Patches: NONE 

09-21 11:32:51.109: I/Adreno200-EGL(6108): Reconstruct Branch: NOTHING 

09-21 11:32:51.179: E/libEGL(6108): called unimplemented OpenGL ES API 

09-21 11:32:51.179: W/Adreno200-ES20(6108): <qgl2DrvAPI_glHint:90>: GL_INVALID_ENUM 

09-21 11:32:51.179: E/libEGL(6108): called unimplemented OpenGL ES API 

09-21 11:32:52.289: D/dalvikvm(6108): GC_FOR_ALLOC freed 1121K, 23% free 9784K/12551K, paused 19ms, total 22ms 
09-21 11:32:52.949: E/BufferQueue(6108): [unnamed-6108-1] dequeueBuffer: mMinUndequeuedBuffers=2 exceeded (dequeued=6) 
09-21 11:32:52.949: I/Choreographer(6108): Skipped 109 frames! The application may be doing too much work on its main thread. 
09-21 11:32:52.979: E/BufferQueue(6108): [unnamed-6108-1] dequeueBuffer: mMinUndequeuedBuffers=2 exceeded (dequeued=5) 
09-21 11:32:55.139: D/dalvikvm(6108): GC_FOR_ALLOC freed 867K, 25% free 9523K/12551K, paused 24ms, total 24ms 
09-21 11:32:55.199: D/dalvikvm(6108): GC_CONCURRENT freed 8K, 22% free 10918K/13959K, paused 12ms+5ms, total 47ms 

09-21 11:33:08.909: E/Web Console(6108): Uncaught TypeError: Property 'onLocationChanged' of object [object Object] is not a function at null:1 

09-21 11:33:08.909: E/Web Console(6108): Uncaught TypeError: Property 'onLocationChanged' of object [object Object] is not a function at null:1 

Я вижу две проблемы в вышеуказанном журнале: один относительно "unimplemented OpenGL ES API", а другой в отношении "Uncaught TypeError: Property 'onLocationChanged' "

Это те причины для маркера не отображается? я исправить их и получить маркер на экране. Пожалуйста, помогите ...

Вот исходный код index.html, который я создал после урока в http://www.wikitude.com/products/wikitude-sdk/samples-tutorials/architect-tutorial-3-geo-ar-poi/

<!DOCTYPE HTML> 
<html> 

<head> 
    <meta name="viewport" content="target-densitydpi=device-dpi, width = 540, user-scalable = 0" /> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

    <script src="architect://architect.js"></script> 
    <script type="text/javascript" src="ade.js"></script> 
    <script> 
     <!-- Javascript function defining a click handler --> 
     function messageClicked() { 
      // set the message DIV text 
      document.getElementById("messageElement").innerHTML = "My text"; 
     } 
    </script> 
    <style type="text/css"> 
/* CSS Style for the message DIV that displays our message */ 
     .message { 
     border-radius: 2em; 
     border: solid 1px #6d6d6d; 
     background-color: rgba(255,255,255,0.5); 
     color: black; 
     text-align: center; 

     position:absolute; 
     width: 50%; 
     height: 10%; 
     left: 25%; 
     top: 45%; 
     } 
} 
</style> 
</head> 

<body class="custom"> 

    <div id="messageElement" class="message" onClick="messageClicked();"> 
     Hello World! 
    </div> 

    <script> 
     AR.context.onLocationChanged = function(lat, lon, alt, acc) { 
     // the current location's latitude, longitude, altitude and accuracy 
     // are passed in by the ARchitect 
     var myGeoLocation = new AR.RelativeLocation(null, 10, 0, 0); 
     var myCircle = new AR.Circle(5, {style: {fillColor: '#FFC100'}}); 
     var myGeoObject = new AR.GeoObject(myGeoLocation, {drawables: {cam: myCircle}}); 
     //AR.context.onLocationChanged = null; 
     // Hide loading message 
     //document.getElementById("messageElement").style.display="none"; 
     } 
    </script> 

</body> 

ответ

1

Uncaught TypeError выход регистрируется из-за ошибки во время выполнения ваш код JavaScript. Если вы разместите код, мы сможем рассказать вам, что случилось.

Некоторые вещи, чтобы проверить:

  1. является architect.js включен правильно
  2. ты использовал API правильно (например, забыл добавить пространство имен AR)
  3. использовать ade.js, который поставляется с SDK для тест на настольном браузере (он обеспечивает намного лучший отладочный опыт).

Отказ от ответственности: Работаю в Wikitude.

+0

wulfgeng, спасибо за ответ. Я думаю, что я делаю все вышеизложенное правильно, так как я использовал код sammple дословно, чтобы начать с чего-то. Я также опубликовал тот же вопрос на форуме wikitude и предоставил исходный код. Я предоставляю ссылку на этот пост здесь. Дайте мне знать, если вы хотите, чтобы я опубликовал код здесь. [Wikitude post] (http://studio.wikitude.com/web/forum/developer-forum/-/message_boards/message/347644) – ramesh

+0

Я выяснил, почему происходило «Непринятое TypeError». Это произошло из-за того, что первая функция 'onLocationChangedFn' выполняет:' AR.context.onLocationChanged = null; 'Как только я удалил эту строку, ошибка исчезла. Но исходный номер маркера, который не отображается в месте нахождения, все еще существует. Единственная причина, по которой я мог подумать, - это «вызванная ошибка нереализованного OpenGL ES API» в logcat. – ramesh

+0

Просто чтобы убедиться, что я делаю правильно, я снова начал с Hello World [tutorial] (http://www.wikitude.com/products/wikitude-sdk/samples-tutorials/). Первые 2 учебника работали очень хорошо, и я смог увидеть дисплей вверх на экране камеры. Затем я перешел к третьему учебнику, чтобы отобразить маркер POI. Я закончил все в соответствии с учебником и попробовал его на устройстве.Такая же проблема произошла: маркер POI на экране камеры и 'вызываемый нереализованный OpenGL ES API' ошибка в logcat. Я пробовал в трех разных устройствах, чтобы убедиться в том же результате. Я застрял. – ramesh

1

, когда у меня есть этот вопрос, это было потому, что я пропустил, чтобы добавить эти функции:

@Override 
protected void onResume() { 
    super.onResume(); 
    this.architectView.onResume(); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    this.architectView.onPause(); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    this.architectView.onDestroy(); 
} 


//my own function 
private void makeUseOfNewLocation(Location location) { 
    try { 
     //MAKE SURE YOU CALL THIS 
     architectView.setLocation(location.getLatitude(), location.getLongitude(), location.getAltitude(), location.getAccuracy()); 
     this.architectView.load("poi_1/index.html"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
Смежные вопросы