IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Centrer la carte sur un GeoPoint


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut Centrer la carte sur un GeoPoint
    Bonjour à tous,

    j'ai un petit problème, je n'arrive pas à centrer la carte sur un GeoPoint.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    GeoPoint geoPoint = new GeoPoint (latInt, longInt);
    OverlayItem overlayitem = new OverlayItem(geoPoint, "Hello from","Tahiti");
    itemizedoverlay.addOverlayItem(overlayitem);
    Ensuite je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mc.setCenter(geoPoint);
    mc étant mon MapController.

    Je rencontre un FC lorsque je fais appel à ce bout de code.

    Merci de votre aide,

    Vivien

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Un Force Close ? Donc tu dois avoir une zoulie trace dans ton LogCat, pourrais-tu la poster, donc ?
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Voilà:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    06-19 18:58:48.621: W/dalvikvm(12932): threadid=1: thread exiting with uncaught exception (group=0x4001d648)
    06-19 18:58:48.621: E/AndroidRuntime(12932): FATAL EXCEPTION: main
    06-19 18:58:48.621: E/AndroidRuntime(12932): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.restomaniak.alpha/com.restomaniak.alpha.Carte}: java.lang.NullPointerException
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1830)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.app.ActivityThread.startActivityNow(ActivityThread.java:1656)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:656)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.widget.TabHost.setCurrentTab(TabHost.java:326)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:132)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:458)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.view.View.performClick(View.java:2532)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.view.View$PerformClick.run(View.java:9291)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.os.Handler.handleCallback(Handler.java:587)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.os.Looper.loop(Looper.java:150)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.app.ActivityThread.main(ActivityThread.java:4293)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at java.lang.reflect.Method.invokeNative(Native Method)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at java.lang.reflect.Method.invoke(Method.java:507)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at dalvik.system.NativeStart.main(Native Method)
    06-19 18:58:48.621: E/AndroidRuntime(12932): Caused by: java.lang.NullPointerException
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at com.restomaniak.alpha.Carte.onCreate(Carte.java:191)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1794)
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	... 18 more

  4. #4
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Qu'y a-t-il à cette ligne-là ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    6-19 18:58:48.621: E/AndroidRuntime(12932): 	at com.restomaniak.alpha.Carte.onCreate(Carte.java:191)
    La méthode englobant cette ligne s'il te plaît
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mc.setCenter(geoPoint);
    onCreate pour la méthode englobante.

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Je crois que Hizin voulait dire, pourrait tu nous montre TOUT le code du onCreate...

    Là on dirait bien que "mc" est null ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    58:48.621: E/AndroidRuntime(12932): Caused by: java.lang.NullPointerException
    06-19 18:58:48.621: E/AndroidRuntime(12932): 	at com.restomaniak.alpha.Carte.onCreate(Carte.java:191)
    Ça veut dire, utilisation d'une méthode sur un objet null, à la ligne 191 de Carte.java, dans la méthode Carte.onCreate()....
    Cela ne peut pas être le paramètre (cela n'empêche pas l'appel de méthode, donc l'exception aurait été levée à l'intérieur de celle-ci), c'est donc obligatoire "mc"....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Oui, je voulais bien signifier le code de toute la méthode

    @Nicroman, tu es sûr que l'on peut passer null à cette méthode sans problème ? (impossibilité de tester maintenant, la doc ne mentionne rien de ce que j'ai vu)

    @italia57 : pour une description de problème, prend l'habitude de fournir :
    • une explication succincte du contexte (s'il y en a besoin)
    • ce que tu as fait (s'il y en a besoin)
    • ce que tu tentes de faire
    • le problème que tu rencontres
    • l'erreur (de compilation ou d'exécution) s'il y en a une (et surtout pas de "ça marche pas").
    • le code responsable de l'erreur (le mieux étant, dans les cas compliqués, de fournir un code minimal permettant de reproduire l'erreur).
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  8. #8
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.carte);
     
     
     
            //Gère les zooms pour les smartphones non tactiles
            mapView = (MapView)this.findViewById(R.id.mapView);
            mapView.setBuiltInZoomControls(true);
     
            //Choisi une image de pointeurs
            Drawable drawable = this.getResources().getDrawable(R.drawable.pointeur);
            ListItimizedOverlay itemizedoverlay = new ListItimizedOverlay(drawable,this);
     
     
     
            //On récupère le nom du restaurant
     
            //On récupère les données du Bundle
            Bundle objetbunbleTris = this.getIntent().getExtras();
     
            if (objetbunbleTris !=null ) {
     
            	nomRestaurant = this.getIntent().getStringExtra("nomRestaurant");
     
     
            } else {
     
            	//Erreur
            	nomRestaurant = "Error";
     
            }
     
    /***************************************************************************************************************************************************/
    /*******************************************************************Connexion BDD*******************************************************************/
    /***************************************************************************************************************************************************/        
     
     
            String result = null;
            InputStream is = null;
            JSONObject json_data=null;
     
     
     
            try{
    		     //commandes httpClient
    		     HttpClient httpclient = new DefaultHttpClient();
    		        HttpPost httppost = new HttpPost("http://www.adresse.com/script.php");
    		        nameValuePairs.add(new BasicNameValuePair("nomRestaurant", nomRestaurant));
    		        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    		        HttpResponse response = httpclient.execute(httppost);
    		        HttpEntity entity = response.getEntity();
    		        is = entity.getContent();
    	     }
    	     catch(Exception e){
    	      Log.i("taghttppost",""+e.toString());
    	      Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
    	     }
     
     
            //conversion de la réponse en chaine de caractère
            try
            {
    	         BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"));
     
    	         StringBuilder sb  = new StringBuilder();
     
    	         String line = null;
     
    	         while ((line = reader.readLine()) != null) 
    	         {
    	         sb.append(line + "\n");
    	         }
     
    	         is.close();
     
    	         result = sb.toString();
            }
            catch(Exception e)
            {
            	Log.i("tagconvertstr",""+e.toString());
            }
     
            //recuperation des donnees json
            try{
            	JSONArray jArray = new JSONArray(result);
     
                for(int i=0;i<jArray.length();i++)
                {
     
                       json_data = jArray.getJSONObject(i);
                       donnees.add(json_data.getString("long"));
                       donnees.add(json_data.getString("lat"));
     
                 }
     
     
           }
    	    catch(JSONException e)
    	    {
    	    	Log.i("tagjsonexp",""+e.toString());
    	    } catch (ParseException e) {
     
    	     Log.i("tagjsonpars",""+e.toString());
           }
     
          //Création de l'adapter
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, donnees);
     
     
            //Recupère les coordonnées en String
            longitude = adapter.getItem(0);
            latitude = adapter.getItem(1);
     
            //Converti les coordonnées String en Int
            latInt = Integer.parseInt(latitude);
            longInt = Integer.parseInt(longitude);
     
     
            //Ajouter des nouveau points
     
            GeoPoint geoPoint = new GeoPoint (latInt, longInt);
            OverlayItem overlayitem = new OverlayItem(geoPoint, "Hello from","Tahiti");
            itemizedoverlay.addOverlayItem(overlayitem);
     
            mc.setCenter(geoPoint); // J'AI UN POINTEUR NUL ICI 
     
            //Ajout des points à la liste
            List<Overlay> mapOverlays = mapView.getOverlays();
            mapOverlays.add(itemizedoverlay);
     
     
        }
    Voici mon code donc:

    je récupère une latitude et une longitude dans la BDD, ensuite je crée un GeoPoint avec ces dernières, et je voudrais centrer la carte sur le GeoPoint créé grace à la Latitude et Longitude mais j'ai un FC

  9. #9
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    S'il ne te met pas d'erreur à la compilation, c'est que la variable mc doit être un attribut de ta classe je pense.

    La méthode "onCreate(Bundle)" est la première appelée pour la création de l'activité.
    Ta variable "mc" n'est pas initialisée dans le bout de code montré, d'où la NullPointerException (tu as une variable qui référence null puisque non-initialisée, donc NPE).

    Il faut que tu l'initialises avant de l'utiliser, donc fait un mc = mapView.getController() avant l'invocation de la méthode setCenter(GeoPoint).

    EDIT : maintenant, je peux tester !
    En passant null à la méthode setCenter(), il y a aussi une NPE, donc il est possible que le GeoPoint vaille null aussi.

    Pour résumer, deux possibilités :
    • soit mc est null avant utilisation, et il faut l'initialiser
    • soit le GeoPoint est null, et il faut faire un test avant de l'utiliser
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  10. #10
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 345
    Points : 103
    Points
    103
    Par défaut
    Merci beaucoup, le problème est résolu, il me manquait bien cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mc = mapView.getController()
    Je ne savais pas qu'elle devait être présente.

    Je vous remercie beaucoup.

    Vivien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Google Maps] [jquery-ui-map] Centrer la carte sur un marker
    Par franpom dans le forum APIs Google
    Réponses: 3
    Dernier message: 26/09/2013, 18h56
  2. [Google Maps] Centrer la carte sur une couche particulière
    Par xillibit dans le forum APIs Google
    Réponses: 2
    Dernier message: 17/10/2011, 11h32
  3. Centrer la carte sur une ville des Antilles
    Par ncconcept dans le forum IGN API Géoportail
    Réponses: 4
    Dernier message: 06/06/2011, 19h26
  4. Centrer un texte sur une image créée dynamiquement
    Par rigolman dans le forum Langage
    Réponses: 7
    Dernier message: 11/10/2005, 17h22
  5. Centrer une feuille sur l'ecran ...
    Par Djedjeridoo dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/06/2003, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo