No muestra los GeoObject en pantalla

Forums:

Hola!!

Estoy integrando vuestra api en nuestra app para Android. He seguido el ejemplo de prueba modificando las coordenadas de los objetos a mostrar y la de la posición del dispositivo. Todas las coordenadas son muy cercanas al dispositivo (menos de 100 metros), pero no las visualizo en pantalla.

protectedvoidonCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.simple_camera);

mBeyondarFragment = (BeyondarFragmentSupport) getSupportFragmentManager().findFragmentById(R.id.beyondarFragment);

mBeyondarFragment.setOnClickBeyondarObjectListener(this);

World world = new World(getApplicationContext());

 

world.setDefaultBitmap(R.drawable.ic_launcher);

world.setGeoPosition(41.39855d, 2.173598d);

GeoObject go1 = new GeoObject(1l);

go1.setGeoPosition(41.398014d, 2.175132);

go1.setName("POI 1");

world.addBeyondarObject(go1);

mBeyondarFragment.setWorld(world);

}


 

Utilizo la librería de compatibilidad V4.

Me podéis dar una pista de dónde puede encontrarse el problema?

Muchas gracias por adelantado y enhorabuena por el pedazo trabajo que estáis haciendo!!!

Un saludo!!!

sami's picture

Se me olvidaba, he descargado y probado vuestro código de ejemplo y tampoco se podía visualizar ningún objeto en pantalla.

Saludos. 

Beyondar's picture

Puede que sea algo relacionado con el device. Que dispositivo utilizas? (os version and device model)

sami's picture

Hola!!

Pues utilizo hasta dos dispositivos diferentes:

- Galaxy S2

- Bq Aquaris 5 HD

 

Beyondar's picture

Que raro... el aquaris tiene android 4.2 y con otros dispositivos funciona, por lo que se refiere al S2 tiene un 2.3, no?? tambien tendria que funcionar :( que version de BeyondAR estas utilizando?? es la 0.5.2?

sami's picture

Sí, es la beyondar-v0.5.2.jar. Te copio el código entero para ver si estoy haciendo algo raro.

Muchas gracias por tu ayuda!!!!

<?xmlversion="1.0"encoding="utf-8"?>

<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent">

 

    <fragment

        android:id="@+id/beyondarFragment"

        android:name="com.beyondar.android.fragment.BeyondarFragmentSupport"

        android:layout_width="match_parent"

        android:layout_height="match_parent"/>

 

</FrameLayout>

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.simple_camera);

mBeyondarFragment = (BeyondarFragmentSupport) getSupportFragmentManager().findFragmentById(R.id.beyondarFragment);

mBeyondarFragment.setOnClickBeyondarObjectListener(this);

World world = new World(getApplicationContext());

world.setDefaultBitmap(R.drawable.ic_launcher);

world.setGeoPosition(41.39855d, 2.173598d);

GeoObject go1 = new GeoObject(1l);

go1.setGeoPosition(41.398014d, 2.175132);

go1.setName("POI 1");

world.addBeyondarObject(go1);

mBeyondarFragment.setWorld(world);

}

Beyondar's picture

Si que se puede ver, el problema es que es muy pequeño por que esta muy lejos. Utiliza este metodo par paliar este problema:

 

mBeyondarFragment.setMaxFarDistance(12);

En el repositorio tienes un ejemplo de como utilizar esta funcionalidad  

sami's picture

Hola.

Pues lo pruebo y te digo algo. Muchas gracias!!!!

sami's picture

Hola!!

Pues ha funcionado, pero sólo si añado un poi al objeto world. Si añado más de uno, no sale!! Alguna idea?

Muchísimas gracias por tu ayuda!!!

sami's picture

Aquí el código:

GeoObject go1 = new GeoObject(1l);

go1.setGeoPosition(41.398014d, 2.175132);

go1.setName("POI 1");

 

world.addBeyondarObject(go1);

 

GeoObject go2 = new GeoObject(2l);

go1.setGeoPosition(41.435206d,2.160938);

go1.setName("POI 2");

 

world.addBeyondarObject(go2);

 

mBeyondarFragment.setWorld(world);

Beyondar's picture

Puedes enviarme el codigo completo en un zip?? asi me sera más facil ver el problema

sami's picture

Claro!!

publicclassARextendsFragmentActivityimplementsOnClickBeyondarObjectListener {

 

privateArrayList<Double> latituds;

privateArrayList<Double> longituds;

privateBeyondarFragmentSupportmBeyondarFragment;

 

privateintposition;

 

@Override

protectedvoidonCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

 

position = getIntent().getIntExtra(HortaSingleton.ARRAY_POSITION, 0);

 

//setContentView(R.layout.ar_layout);

setContentView(R.layout.simple_camera);

 

mBeyondarFragment = (BeyondarFragmentSupport) getSupportFragmentManager().findFragmentById(R.id.beyondarFragment);

mBeyondarFragment.setOnClickBeyondarObjectListener(this);

mBeyondarFragment.setMaxFarDistance(12);

 

Worldworld = new World(getApplicationContext());

 

// The user can set the default bitmap. This is useful if you are

// loading images form Internet and the connection get lost

world.setDefaultBitmap(R.drawable.marker_orange);

world.setGeoPosition(41.39855d, 2.173598d);

 

GeoObject go1 = new GeoObject(1l);

go1.setGeoPosition(41.398014d, 2.175132);

go1.setName("POI 1");

 

world.addBeyondarObject(go1);

 

GeoObject go2 = new GeoObject(2l);

go1.setGeoPosition(41.435206d,2.160938);

go1.setName("POI 2");

 

world.addBeyondarObject(go2);

 

mBeyondarFragment.setWorld(world);

 

}

sami's picture

Perdona, te paso la última versión, que con el copy&paste había un error en el que te he enviado antes:

 

publicclassARextendsFragmentActivityimplementsOnClickBeyondarObjectListener {

 

privateArrayList<Double> latituds;

privateArrayList<Double> longituds;

privateBeyondarFragmentSupportmBeyondarFragment;

 

privateintposition;

 

@Override

protectedvoidonCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

 

position = getIntent().getIntExtra(HortaSingleton.ARRAY_POSITION, 0);

 

//setContentView(R.layout.ar_layout);

setContentView(R.layout.simple_camera);

 

mBeyondarFragment = (BeyondarFragmentSupport) getSupportFragmentManager().findFragmentById(R.id.beyondarFragment);

mBeyondarFragment.setOnClickBeyondarObjectListener(this);

mBeyondarFragment.setMaxFarDistance(100);

 

Worldworld = new World(getApplicationContext());

 

// The user can set the default bitmap. This is useful if you are

// loading images form Internet and the connection get lost

world.setDefaultBitmap(R.drawable.marker_orange);

world.setGeoPosition(41.39855d, 2.173598d);

 

GeoObject go1 = new GeoObject(1l);

go1.setGeoPosition(41.398014d, 2.175132d);

go1.setName("POI 1");

 

world.addBeyondarObject(go1);

 

GeoObject go2 = new GeoObject(2l);

go2.setGeoPosition(41.435206d,2.160938d);

go2.setName("POI 2");

 

world.addBeyondarObject(go2);

 

mBeyondarFragment.setWorld(world);

 

}

}
sami's picture

Hola otra vez!!!

Ya me salen más puntos en pantalla. Creo que lo he podido resolver. Por favor, no hagas caso a mis dos últimos mensajes (no te quiero hacer perder más el tiempo :-) ). Si tubiera alguna otra duda, te la hago llegar. Este es el código que me funciona.

GeoObject go1 = new GeoObject(1l);

go1.setGeoPosition(41.398014d, 2.175132d);

go1.setName("POI 1");

world.addBeyondarObject(go1);

GeoObject go2 = new GeoObject(2l);

go2.setGeoPosition(41.399612d,2.180078d);

go2.setName("POI 2");

world.addBeyondarObject(go2);

mBeyondarFragment.setWorld(world);

Muchas gracias por tu ayuda!!!!

Saludos!!!

Beyondar's picture

Fantastico!

Cual era el problema? la longitud y latitud no eran correctas?

sami's picture

Pues por un lado amplié el valor de maxFarDiatance a 100 y luego saber utilizar bien el copy&paste :). 

Aprovecho para hecerte llegar otra duda. He introducido unos puntos a visualizar cuando oriento el móvil hacia unas coordenadas en concreto, pero estos puntos me salen en pantalla cuando oriento el móvil justo al lado opuesto. Sabes cuál puede ser la causa?

 

Beyondar's picture

Puede ser que sea unbug, me puedes pasar las cordenadas que utilizas?

sami's picture

Buenas. Aquí tienes las que utilizo en un Galaxy S2 y Nexus 5

41.39636,2.173684

41.394783,2.173684

41.397519,2.179048

Muchas gracias!!!!

Beyondar's picture

Podrias decirme en que posición esta el usuario? Las coordenadas del objeto World, si no poco puedo hacer.

sami's picture

Hola!!

Tienes razón!! Las coordenadas son 41.39855, 2.173598

¿Hay alguna manera de que se vea el punto en pantalla sin tener en cuenta la distancia? Ahora me encuentro que según que puntos, por distancia no se visualizan. 

Otra vez, mil gracias por tu ayuda!!

sami's picture

Buenas!!

Pudisteis averiguar algo sobre el problema de la visualización opuesta de los pois?

Muchas gracias!!

Beyondar's picture

Hey, he estado muy liado estas semanas :(

Lo he provado y a mi me sale bien

He cogido el codigo de los ejemplos y he puesto lo siguiente:

// CustomWorldHelper
sharedWorld.setGeoPosition(41.39855d, 2.173598d); GeoObject go_1 = new GeoObject(7l); go_1.setGeoPosition(41.39636d, 2.173684d); go_1.setImageResource(R.drawable.creature_2); go_1.setName("Creature 2"); GeoObject go_2 = new GeoObject(8l); go_2.setGeoPosition(41.394783, 2.173684d); go_2.setImageResource(R.drawable.rectangle); go_2.setName("Object 8"); GeoObject go_3 = new GeoObject(9l); go_3.setGeoPosition(41.397519d, 2.179048d); go_3.setImageResource(R.drawable.creature_4); go_3.setName("Creature 4"); sharedWorld.addBeyondarObject(go_1); sharedWorld.addBeyondarObject(go_2); sharedWorld.addBeyondarObject(go_3);

y como estàn lejos, abro el el ejemplo "Simple camera with a max/min distance far for rendering"

Si no te funciona, enviame el codigo entero (si puedes) y lo miramos

sami's picture

Jejeje, no problem!! Lo comprendo perfectamente :P

Sigo tu ejemplo y te digo el resultado!!!!

Muchas gracias otra vez!!!

sami's picture

Perdona, te refieres al ejemplo de la clase SimpleCameraWithMaxFarMinAwayActivity?

Beyondar's picture

Si. Recuerda que en los ejemplos el objecto World se llena en la clase CustomWorldHelper

sami's picture

Pues me lo miro y te cuento!!

Muchas gracias otra vez!!!

sami's picture

Hola!! 

Perdona el retraso en contestarte. Funcionó!!! Me basé en la clase que me comentabas y va perfecto.

Muchas gracias por toda la ayuda facilitada.

Un abrazo!!

sami's picture

Hola otra vez.

Una pregunta, la api soporta visualizar vistas personalizadas (layout) en lugar de imágenes a la hora de mostrar los puntos en la pantalla?

Gracias!!

sami's picture

Hola otra vez.

Pues he podido mostrar una custom view utilizando el BeyondarViewAdapter que he visto en un código de ejemplo. Lo único es que he tenido que asignar a cada objeto una imagen de 1x1 pixel transparente por que si no se asignaba nada, daba un NullPointerException. Si hay alguna manera más elegante de hacerlo, ya me lo dirás.

Gracias por todo otra vez.

Un saludo!!!