1 package com.example.patrice.proj_google_map01; 2 3 import android.support.v4.app.FragmentActivity; 4 import android.support.v7.app.AppCompatActivity; 5 import android.os.Bundle; 6 import android.util.Log; 7 import android.widget.TextView; 8 import android.widget.Toast; 9 10 import com.google.android.gms.maps.CameraUpdateFactory; 11 import com.google.android.gms.maps.GoogleMap; 12 import com.google.android.gms.maps.SupportMapFragment; 13 import com.google.android.gms.maps.model.CameraPosition; 14 import com.google.android.gms.maps.model.LatLng; 15 import com.google.android.gms.maps.model.Marker; 16 import com.google.android.gms.maps.model.MarkerOptions; 17 18 19 import com.google.android.gms.maps.GoogleMap.OnMapClickListener; // si absent on doit ajouter GoogleMap.xxxxx 20 import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener; // si absent on doit ajouter GoogleMap.xxxxx 21 import com.google.android.gms.maps.GoogleMap.OnMarkerDragListener; // si absent on doit ajouter GoogleMap.xxxxx 22 23 public class MainActivity extends FragmentActivity implements OnMapLongClickListener , OnMapClickListener , OnMarkerDragListener 24 { 25 26 private static GoogleMap map; 27 TextView tvLocInfo; 28 29 @Override 30 protected void onCreate(Bundle savedInstanceState) { 31 super.onCreate(savedInstanceState); 32 setContentView(R.layout.activity_main); 33 34 map = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); 35 map.setOnMarkerDragListener(this); 36 map.setOnMapLongClickListener(this); 37 map.setOnMapClickListener(this); 38 39 //map.getUiSettings().setZoomControlsEnabled(true); 40 //map.getUiSettings().setCompassEnabled(true); 41 //map.getUiSettings().setMyLocationButtonEnabled(true); 42 43 44 45 map.setMapType(GoogleMap.MAP_TYPE_HYBRID); 46 map.setMyLocationEnabled(true); // permission ? 47 map.setTrafficEnabled(true); 48 map.setIndoorEnabled(true); 49 map.setBuildingsEnabled(true); 50 map.getUiSettings().setZoomControlsEnabled(true); 51 map.getUiSettings().setAllGesturesEnabled(true); 52 53 54 /* OK : 55 map.setMyLocationEnabled(true); doit être déclaré avant 56 map.getUiSettings().setMyLocationButtonEnabled(true); 57 map.getUiSettings().setCompassEnabled(true); 58 map.getUiSettings().setZoomControlsEnabled(true); 59 */ 60 tvLocInfo = (TextView)findViewById(R.id.locinfo); 61 62 CameraPosition INIT = 63 new CameraPosition.Builder() 64 .target(new LatLng(44, 2)) 65 .zoom(17.5F) 66 // .bearing(300F) // orientation 67 .tilt( 50F) // viewing angle 68 .build(); 69 70 // use map to move camera into position 71 map.moveCamera( CameraUpdateFactory.newCameraPosition(INIT) ); 72 73 //create initial marker 74 map.addMarker( new MarkerOptions() 75 .position( new LatLng(44, 2) ) 76 .title("Location") 77 .snippet("First Marker")).showInfoWindow(); 78 79 } 80 81 @Override 82 public void onMapLongClick(LatLng latLng) { 83 map.addMarker(new MarkerOptions() 84 .position(latLng) 85 .draggable(true)); 86 tvLocInfo.setText("New marker added@" + latLng.toString()); 87 } 88 89 @Override 90 public void onMapClick(LatLng latLng) { 91 map.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 92 } 93 94 @Override 95 public void onMarkerDragStart(Marker marker) { 96 tvLocInfo.setText("Marker " + marker.getId() + " DragStart"); 97 } 98 99 @Override 100 public void onMarkerDrag(Marker marker) { 101 tvLocInfo.setText("Marker " + marker.getId() + " Drag@" + marker.getPosition()); 102 } 103 104 @Override 105 public void onMarkerDragEnd(Marker marker) { 106 107 LatLng dragPosition = marker.getPosition(); 108 double dragLat = dragPosition.latitude; 109 double dragLong = dragPosition.longitude; 110 Log.i("info", "on drag end :" + dragLat + " dragLong :" + dragLong); 111 Toast.makeText(getApplicationContext(), "Marker Dragged..!", Toast.LENGTH_LONG).show(); 112 113 tvLocInfo.setText("Marker " + marker.getId() + " DragEnd"); 114 115 } 116 } 117