Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme avec localisation sur une carte google ma

    22 mai 2013 à 23:20:48

    Bonsoir,

    J'ai rèussi à affficher la carte de google maps.Maintenant je souhaite qu'une fois la carte s'affiche j'ai un marqueur qui m'indique ma position sur la carte.

    Voila le code que j'ai utilisé mais ca ne marche pas

    code manifest:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.googlemapv2"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="9"
            android:targetSdkVersion="17" />
    
        <uses-feature
            android:glEsVersion="0x00020000"
            android:required="true" />
    
        <permission
            android:name="com.example.googlemapv2.permission.MAPS_RECEIVE"
            android:protectionLevel="signature" />
    
        <uses-permission android:name="com.example.googlemapv2.permission.MAPS_RECEIVE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.googlemapv2.MainActivity"
                android:label="@string/app_name" >
                <meta-data
                    android:name="com.google.android.maps.v2.API_KEY"
                    android:value="monAPIKEY" />
    
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>

    Le code du Layout :

    <?xml version="1.0" encoding="utf-8"?>
    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />

    Le code java:

    package com.example.googlemapv2;
    
    import android.app.Activity;
    import android.location.Location;
    import android.location.LocationListener;
    import android.location.LocationManager;
    import android.os.Bundle;
    import android.view.Menu;
    import android.widget.Toast;
    
    import com.google.android.gms.maps.CameraUpdateFactory;
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.MapFragment;
    import com.google.android.gms.maps.model.LatLng;
    import com.google.android.gms.maps.model.Marker;
    import com.google.android.gms.maps.model.MarkerOptions;
    
    
     public class MainActivity extends Activity implements LocationListener {
     private LocationManager locationManager;
     private GoogleMap gMap;
     private Marker marker;
    
     @Override
     protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
    
     gMap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
    
    
    
     marker = gMap.addMarker(new MarkerOptions().title("Vous êtes ici")
     .position(new LatLng(0, 0)));
     }
    
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
     // Inflate the menu; this adds items to the action bar if it is present.
     getMenuInflater().inflate(R.menu.main, menu);
     return true;
    
     }
    
     @Override
     public void onResume() {
     super.onResume();
    
     locationManager = (LocationManager) this
     .getSystemService(LOCATION_SERVICE);
    
     if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
     abonnementGPS();
     }
     }
    
     @Override
     public void onPause() {
     super.onPause();
    
     // On appelle la méthode pour se désabonner
     desabonnementGPS();
     }
    
     public void desabonnementGPS() {
     // Si le GPS est disponible, on s'y abonne
     locationManager.removeUpdates(this);
     }
    
     public void abonnementGPS() {
     // On s'abonne
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
     5000, 10, this);
     }
    
     @Override
     public void onLocationChanged(Location location) {
     final StringBuilder msg = new StringBuilder("lat : ");
     msg.append(location.getLatitude());
     msg.append("; lng : ");
     msg.append(location.getLongitude());
    
     Toast.makeText(this, msg.toString(), Toast.LENGTH_SHORT).show();
    
     final LatLng latLng = new LatLng(location.getLatitude(),
     location.getLongitude());
     gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15));
     marker.setPosition(latLng);
    
     }
    
     @Override
     public void onProviderDisabled(String provider) {
     if ("gps".equals(provider)) {
     desabonnementGPS();
     }
    
     }
    
     @Override
     public void onProviderEnabled(String provider) {
     if ("gps".equals(provider)) {
     abonnementGPS();
     }
     }
    
     @Override
     public void onStatusChanged(String provider, int status, Bundle extras) {
     // TODO Auto-generated method stub
    
     }
    
     }
    
    

    Merci d'avance



    • Partager sur Facebook
    • Partager sur Twitter
      23 mai 2013 à 2:32:45

      salut qu'est ce qui ne marche pas sur ton code ?

      aussi tu dois utiliser la librairie dans ton manifest, pour la classe activité il faut utiliser les mapfragment 

      • Partager sur Facebook
      • Partager sur Twitter
        23 mai 2013 à 22:54:45

        Bonjour,

        Merci pour ta réponse j'ai réussi à afficher la carte avec ma position et le zoom.

        Maintenant je suis un peu perdu je t'explique ce que je dois faire , enfaite je dois afficher tout les restaurants à coté de ma position je sais pas comment faire

        Si tu as une piste par la quel je commence ou un tutoriel ça m’aidera beaucoup.

        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2013 à 15:50:44

          SAlut , je suis débutant dans Android, est ce que tu peut nous montré c'est quoi la solution que tu a trouvé pour fixé ce probleme?
          j'ai ajouté dans le manifeste  <uses-library android:name="com.google.android.gms.maps.MapFragment" /> mais ca n'a pas marché 

          merci d'avance :)

          • Partager sur Facebook
          • Partager sur Twitter
            24 mai 2013 à 17:20:49

            Oui pas de problème

            Le code permet de localisé ta position avec un marqueur et zoomer sur ta position

            Code java :

            package com.example.test4;
            
            
            
            import android.location.Criteria;
            import android.location.Location;
            import android.location.LocationListener;
            import android.location.LocationManager;
            import android.os.Bundle;
            import android.support.v4.app.FragmentActivity;
            import android.support.v4.app.FragmentManager;
            import android.view.Menu;
            
            import com.google.android.gms.maps.CameraUpdateFactory;
            import com.google.android.gms.maps.GoogleMap;
            import com.google.android.gms.maps.SupportMapFragment;
            import com.google.android.gms.maps.model.BitmapDescriptorFactory;
            import com.google.android.gms.maps.model.LatLng;
            import com.google.android.gms.maps.model.MarkerOptions;
            
            public class MainActivity extends FragmentActivity implements LocationListener {
            	private GoogleMap myMap;
            
            	@Override
            	protected void onCreate(Bundle savedInstanceState) {
            		super.onCreate(savedInstanceState);
            		setContentView(R.layout.activity_main);
            
            		FragmentManager myFragmentManager = getSupportFragmentManager();
            		SupportMapFragment mySupportMapFragment = (SupportMapFragment) myFragmentManager
            				.findFragmentById(R.id.map);
            
            		myMap = mySupportMapFragment.getMap();
            
            		myMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            		myMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
            
            		myMap.setMyLocationEnabled(true);
             
                    // Getting LocationManager object from System Service LOCATION_SERVICE
                    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
            
                    // Creating a criteria object to retrieve provider
                    Criteria criteria = new Criteria();
            
                    // Getting the name of the best provider
                    String provider = locationManager.getBestProvider(criteria, true);
            
                    // Getting Current Location
                    Location location = locationManager.getLastKnownLocation(provider);
            
                    if(location!=null){
                        onLocationChanged(location);
                    }
                    locationManager.requestLocationUpdates(provider, 20000, 0, this);
            		  
            
            		
            
            			
                }
            	
            		  public void onLocationChanged(Location location) {
            
            
            		        // Getting latitude of the current location
            		        double latitude = location.getLatitude();
            
            		        // Getting longitude of the current location
            		        double longitude = location.getLongitude();
            
            		        // Creating a LatLng object for the current location
            
            		        myMap.animateCamera(CameraUpdateFactory.newLatLngZoom(
            
            		        		new LatLng(latitude,longitude), 15),2000,null);
            		        myMap.addMarker(new MarkerOptions()
            
            				.position(new LatLng(latitude,longitude))
            
            				.title("Voila ou je suis")
            				.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_VIOLET)));
            		    }
            
            
            	
            	@Override
            	public boolean onCreateOptionsMenu(Menu menu) {
            		// Inflate the menu; this adds items to the action bar if it is present.
            		getMenuInflater().inflate(R.menu.main, menu);
            		return true;
            	}
            	@Override
            	public void onProviderDisabled(String provider) {
            		// TODO Auto-generated method stub
            		
            	}
            	@Override
            	public void onProviderEnabled(String provider) {
            		// TODO Auto-generated method stub
            		
            	}
            	@Override
            	public void onStatusChanged(String provider, int status, Bundle extras) {
            		// TODO Auto-generated method stub
            		
            	}
            
            }
            

            Code manifest :

            <?xml version="1.0" encoding="utf-8"?>
            <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                package="com.example.test4"
                android:versionCode="1"
                android:versionName="1.0" >
            
                <uses-sdk
                    android:minSdkVersion="10"
                    android:targetSdkVersion="17" />
                <permission
                    android:name="com.example.test4.permission.MAPS_RECEIVE"
                    android:protectionLevel="signature"/>
                <uses-permission android:name="com.example.test4.permission.MAPS_RECEIVE"/>    
                <uses-permission android:name="android.permission.INTERNET" />
                <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
                <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
                <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
                <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" >
                    <uses-library
                    android:name="com.google.android.maps" />
                <meta-data
                        android:name="com.google.android.maps.v2.API_KEY"
                        android:value="key_api"/>    
                    <activity
                        android:name="com.example.test4.MainActivity"
                        android:label="@string/app_name" >
                        <intent-filter>
                            <action android:name="android.intent.action.MAIN" />
            
                            <category android:name="android.intent.category.LAUNCHER" />
                        </intent-filter>
                    </activity>
                </application>
            
            </manifest>
            

            Code layout :

            <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:paddingBottom="@dimen/activity_vertical_margin"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:paddingTop="@dimen/activity_vertical_margin"
                tools:context=".MainActivity" >   
               
               <fragment 
                    android:id="@+id/map"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    class="com.google.android.gms.maps.SupportMapFragment" />
               
            </RelativeLayout>

            C'est mieux de débogué  sur ton téléphone et n'oublie pas d'ajouter la library de google play service



            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2013 à 17:34:58

              Merci bien pour ta réponse cher Badryach, j'ai réussit à faire fonctionné le map sur votre premier code après un effort considérable de ma part lol , la mappe s'affiche mais ne me donne pas ma position, probablement j'ai dû oublier de donné cette permission 

              <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> qui donne accès au wifi ou 3g ..

              ce nouveau code fonctionne parfaitement, merci mon vieux, tu m'a sauvé :)

              • Partager sur Facebook
              • Partager sur Twitter
                24 mai 2013 à 17:38:06

                Je t'en prie je suis débutant comme toi donc j'ai galère un peu avec android lol mais content de t'avoir aider
                • Partager sur Facebook
                • Partager sur Twitter
                  10 juillet 2013 à 18:54:19

                  salut,

                  votre code fonctionne correctement mais il n'affiche pas la position actuelle!!! svp j'ai besoin de votre aide pour résoudre ce problème. 

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Probleme avec localisation sur une carte google ma

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown