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 Studio Java Discussion :

Maps sous Android Studio 1.0


Sujet :

Android Studio Java

  1. #1
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut Maps sous Android Studio 1.0
    Bonjour,

    Je voudrai savoir s'il existe une solution d'utilisation des Maps (Google Map ou autre) dans les applications Android, autrement qu'en passant par le paiement d'une licence de développeur ?

    Je viens de passer sous Android Studio 1.0, et au delà de charger les bons packages du SDK Manager, je suis un peu (beaucoup) largué sur leur import dans mon projet. Foin de "Import" "Existing Android Code" ou équivalent, et du coup, je ne trouve aucun tuto actualisé.

    Si vous pouvez me donner une piste et/ou des infos, je vous en remercie par avance.

    Très bonne journée à toutes et tous.

  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
    Sauf pour des services de cartographie propriétaire que je ne connais pas, tu n'as pas besoin de payer pour utiliser Google Maps (du moment que tu es en-dessous de 250 000 requêtes / jour de mémoire).
    Tu inclues la dépendance envers les GPServices, tu utilises, et c'est tout.

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Novembre 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Novembre 2014
    Messages : 67
    Points : 86
    Points
    86
    Par défaut
    Salut,

    En effet, pas besoin de payer si c'est pour du niveau amateur.
    Pour l'intégration et l'utilisation de GMaps dans un projet Android, regarde ici.
    Il va te falloir une clé API, tout est détaillé dedans

  4. #4
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Merci de votre aide,

    La première partie du tuto se passe nickel, mais pas la suite.

    Je n'arrive pas à afficher le SHA-1

    Quand je tape la commande proposée sur le tutoriel (Windows 7 x64), j'obtiens un message d'erreur : error keytool : java.lang.exception : le fichier de clés n'existe pas.

    J'aurais mal installé quelque chose ?...

    ------------------------

    +24h : a priori, j'ai du mal écrire la ligne de commande puisque j'ai réussi au final à obtenir le SHA-1. Je suis allé au bout du tuto. Maintenant, je dois tester si j'affiche bien la carte. Je vais encore faire quelques modifs (et beaucoup de tests !). Merci de votre aide, et sans doute à très bientôt !

  5. #5
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Bonjour tout le monde,

    Bon, je vais encore me faire taper sur les doigts parce que je réponds à mon propre message, mais c'est parce que je n'ai trouvé de fonction Edit, je le jure !

    Après avoir rencontré (et résolu ?) de multiples problèmes, je n'arrive toujours pas à afficher ma vue :

    Mon Manifest

    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
     
        <?xml version="1.0" encoding="utf-8"?>
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
            package="fr.kraftwerk.ugi_move" >
            <uses-permission android:name="android.permission.INTERNET"/>
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
            <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
            <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
            <permission
                android:name="com.example.maps.permission.MAPS_RECEIVE"
                android:protectionLevel="signature"/>
            <uses-permission android:name="com.example.maps.permission.MAPS_RECEIVE"/>
     
            <uses-feature
                android:glEsVersion="0x00020000"
            android:required="true"/>
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <meta-data
                android:name="com.google.android.gms.version"
                android:value="@integer/google_play_services_version"/>
            <meta-data
                android:name="com.google.android.maps.v2.API_KEY"
                android:value="******************************************"/>
            <activity
                android:name=".Accueil"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
     
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name=".Tournee"
                android:label="@string/appli2" >
            </activity>
     
        </application>
     
    </manifest>
    Le XML de l'activité où je veux afficher la Map

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingTop="@dimen/activity_vertical_margin"
            android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".Accueil"
            android:background="@color/rougekwf">
     
        <com.google.android.gms.maps.MapView android:id="@+id/mapview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
     
     
    </RelativeLayout>
    J'ai suivi un tuto indiquant qu'il faut créer une classe pour utiliser le fragment (même si je vous avoue que je ne vois pas le lien comment cette classe peut afficher la carte dans mon layout). Il faut que je l'instancie dans mon activité ? Comment ?

    Je vous donne le code que j'ai trouvé :

    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
     
    package fr.kraftwerk.ugi_move;
     
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
     
    import com.google.android.gms.common.GooglePlayServicesNotAvailableException;
    import com.google.android.gms.maps.CameraUpdate;
    import com.google.android.gms.maps.CameraUpdateFactory;
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.MapView;
    import com.google.android.gms.maps.MapsInitializer;
    import com.google.android.gms.maps.model.LatLng;
     
    /**
     * Created by Administrateur on 23/12/2014.
     */
    public class Carte extends Fragment
    {
        MapView mapView;
        GoogleMap map;
     
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            View v = inflater.inflate(R.layout.tournees_principal, container, false);
     
            // Récupère la mapview du layout et crée la carte
            mapView = (MapView) v.findViewById(R.id.mapview);
            mapView.onCreate(savedInstanceState);
     
            // Initialise la carte sur GoogleMap
            map = mapView.getMap();
            map.getUiSettings().setMyLocationButtonEnabled(false);
            map.setMyLocationEnabled(true);
     
            /*
            // Gestion d'absence de map
     
            try
            {
                MapsInitializer.initialize(this.getActivity());
            }
            catch (GooglePlayServicesNotAvailableException e)
            {
                e.printStackTrace();
            }
            */
     
            // Met à jour la localisation et zoome sur la carte
     
            CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(43.1, -87.9), 10);
            map.animateCamera(cameraUpdate);
     
            return v;
        }
     
     
     
        @Override
     
        public void onResume()
        {
            mapView.onResume();
            super.onResume();
        }
     
     
     
        @Override
     
        public void onDestroy()
        {
            super.onDestroy();
            mapView.onDestroy();
        }
     
     
     
        @Override
     
        public void onLowMemory()
        {
            super.onLowMemory();
            mapView.onLowMemory();
        }
     
    }
    En toute sincérité, après plus de 20 ans sous Basic et dérivés, le langage objet, it's a bit strong, comme dirait l'ami du pêcheur !

    Merci de votre aide pour me mettre sur la piste de ce qui ne va pas.

    Et excellent Noël à toutes et tous !

  6. #6
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Bonjour tout le monde,

    Plusieurs jours de recherche, et toujours aucun résultat.

    Je deviens fou avec ce truc. Ma carte ne veut pas s'afficher. J'ai repris toutes les étapes :

    - installé le SDK avec les packages qui vont bien
    - fait les modifications demandées au build.gradle, au manifest, au xml et au main.
    - généré ma clé API déclarée sous Google API console.

    Et rien de rien !

    L'appli se lance, rien ne bug, mais pas de carte. La tablette sur laquelle j'exécute ça fonctionne bien avec les cartes (j'ai vérifié) mais elle ne veut rien savoir de mon appli.

    Là j'avoue ne plus très bien savoir par quel bout prendre le problème...

    Il existe un moyen de tester la clé API générée pour voir si elle répond correctement ?

    En tout état de cause, joyeuses fêtes à toutes et tous.

  7. #7
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Encore moi !

    Je veux trouver ce truc, et ça me rend vraiment chèvre !

    Bon, j'ai effectivement trouvé une instanciation de ma map (je ne comprenais pas comment il faisait le lien entre ma classe et l'affichage dans le layout sinon !)

    Ca donne :

    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
     
    package fr.kraftwerk.ugi_move;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
     
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.MapFragment;
    import com.google.android.gms.maps.MapView;
    import com.google.android.gms.maps.OnMapReadyCallback;
    import com.google.android.gms.maps.model.LatLng;
    import com.google.android.gms.maps.model.MarkerOptions;
     
    import java.util.Map;
     
    /**
     * Created by Administrateur on 23/12/2014.
     */
    public class Tournee extends FragmentActivity
    implements OnMapReadyCallback
    {
     
        @Override
        public void onMapReady(GoogleMap googleMap)
        {
            googleMap.addMarker(new MarkerOptions()
                    .position(new LatLng(0, 0))
                    .title("Marqueur"));
     
        }
     
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.tournees_principal);
     
            MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map);
            mapFragment.getMapAsync(this);
     
        }
    }
    Sauf que... mapFragment.getMapAsync(this) renvoie toujours Null !

    A part le soupçon de haine tenace que me porte Android, soupçon confirmé par de nombreux échecs totalement inexplicables, la question est "Pourquoi, mais pourquoi ?...."

    Merci de votre aide.

  8. #8
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Bonjour,

    Après recherches acharnées et franchement désespérées, il s'avère que ma map s'affiche bien sur un téléphone récent, mais refuse de le faire sur ma tablette (une no name en 4.2.2). J'en déduis que celle-ci n'arrive pas à gérer mon MapFragment et se panne lamentablement.

    Existe-t-il une méthode qui permettrait :

    - Soit de faire accepter les MapFragment par ma tablette no name ? (j'ai vu des trucs sur le net, mais ça ne me mène nulle part)

    - Soit d'utiliser autre chose que MapFragment plus "digérable" pour ma tablette. Je pensais à MapView, mais cela est-il bien utile ?

    Merci de vos réponses, et bonne année à toutes et tous.

  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
    As-tu les Google Play Services sur ta tablette ?

  10. #10
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Bonjour Hizin,

    J'ai le Play Store dans les applis, j'ai même l'appli Maps (qui fonctionne très bien), et dans la liste des applis aux paramètres, je trouve Services Google Play (version 6.5.99)., avec les autorisations : "position approximative (réseau)" et "position précise (GPS et réseau)" : c'est ce qui se rapproche le plus de la notion de Map.

    Merci de ton avis.

  11. #11
    Membre habitué Avatar de Cabos
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Novembre 2010
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 108
    Points : 156
    Points
    156
    Par défaut
    Bon, je retiens que l'intégration des Google maps pose pas mal de problèmes avec ma no name.

    J'ai reçu des infos sur l'utilisation d'OpenStreetMap. Pour ceux qui rencontreraient ce type de soucis, un exemple précis de code est téléchargeable librement sur GitHub, projet omsdroid.

    Dans l'immédiat, je clos le sujet parce que je ne pense pas que l'on progressera beaucoup plus. Ces no name sont montées de façon particulière, et savoir ce qui manque ou non relève parfois de l'impossible. C'est le cas ici.

    Merci à tous ceux qui m'ont aidé dans mes recherches.

    A très bientôt.

  12. #12
    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
    Merci pour ton retour.
    Ton souci est véritablement assez particulier et c'est bien la première fois que je constate ce genre de problème.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/04/2015, 18h12
  2. Google map sous android
    Par feriela dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 24/04/2013, 14h44
  3. Position de l'utilisateur sur une Google Map sous Android
    Par Feanorin dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 16/01/2012, 12h53
  4. Google Map sous android (affichage des positions)
    Par mastraze dans le forum API standards et tierces
    Réponses: 0
    Dernier message: 21/12/2010, 23h08

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