Probleme avec localisation sur une carte google maps
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:
Code:
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="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 :
Code:
1 2 3 4 5 6
| <?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:
Code:
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
| 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.