Arcgis: cómo obtener la ubicación del dispositivo

He intentado implementar estos códigos en mi aplicación, pero no funciona, no sé dónde me equivoqué.

Básicamente, cuando se inicia la muestra de la ubicación del dispositivo. No me muestra dónde está mi ubicación actual y no veo ningún punto azul que se asemeja a la ubicación actual en que estoy.

Lo único que veo es el mapa. Sólo un mapa de zoom plano.

Estaría muy agradecido si alguien que me pudiera ayudar en cómo obtener la ubicación actual con los puntos azules que se muestra en el mapa ..

Esta es mi clase MainActivity.class

public class HelloWorld extends Activity { MapView mMapView = null; ArcGISTiledMapServiceLayer tileLayer; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Retrieve the map and initial extent from XML layout mMapView = (MapView) findViewById(R.id.map); mMapView.addLayer(new ArcGISTiledMapServiceLayer( "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer")); mMapView.setOnStatusChangedListener(new OnStatusChangedListener() { public void onStatusChanged(Object source, STATUS status) { if (source == mMapView && status == STATUS.INITIALIZED) { LocationService ls = mMapView.getLocationService(); ls.setAutoPan(false); ls.start(); } } }); } protected void onPause() { super.onPause(); mMapView.pause(); } @Override protected void onResume() { super.onResume(); mMapView.unpause(); } } 

Este es un código que dibuja mi ubicación cada 1 segundo vía proveedor y GPS. Primero vamos a declarar variables:

 private GraphicsLayer myGraphicalLayer; MapView mMapView; ArcGISLocalTiledLayer baseLayer; private LocationManager mlocManager; private LocationListener mlocListener; 

En función onCreate LLAMAMOS LocationListener:

 mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); mlocListener = new MyLocationListener(); mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, mlocListener); mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, mlocListener); // loading the map mMapView = (MapView) findViewById(R.id.localMap); baseLayer = new ArcGISLocalTiledLayer(basemapurl); mMapView.addLayer(baseLayer); // defining my position layer myGraphicalLayer = new GraphicsLayer(); 

Entonces una función para dibujar mi ubicación:

 private void SetMyLocationPoint(final double x, final double y) { PictureMarkerSymbol myPin = new PictureMarkerSymbol(getResources().getDrawable( R.drawable.mylocation_icon)); Point wgspoint = new Point(x, y); Point mapPoint = (Point) GeometryEngine.project(wgspoint, SpatialReference.create(4326), mMapView.getSpatialReference()); Graphic myPinGraphic = new Graphic(mapPoint, myPin); try { myGraphicalLayer.removeAll(); } catch (Exception e) { e.printStackTrace(); } myGraphicalLayer.addGraphic(myPinGraphic); myGraphicalLayer.setVisible(true); mMapView.addLayer(myGraphicalLayer); } 

Crear una clase interna que implemente MyLocationListener para obtener una ubicación instantánea, y dejar que llame a la función llamada SetMyLocationPoint de esta manera:

 public class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location loc) { SetMyLocationPoint(loc.getLongitude(), loc.getLatitude()); } @Override public void onProviderDisabled(String provider) { Toast.makeText(getApplicationContext(), "provider enabled", Toast.LENGTH_SHORT) .show(); } @Override public void onProviderEnabled(String provider) { Toast.makeText(getApplicationContext(), "provider disabled", Toast.LENGTH_SHORT) .show(); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } } 

Debe utilizar su propio administrador de ubicación o el cliente de ubicación para obtener la ubicación actual del dispositivo y, a continuación, tendrá que agregar ese punto en el mapa.

Su mapa debe estar en un MapFragment . Obtenga el objeto googleMap del fragmento y luego añada su punto azul personalizado en él.

 LocationManager locationManager = (LocationManager) getApplicationContext() .getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5, listener); } private LocationListener listener = new LocationListener() { @Override public void onLocationChanged(Location location) { // TODO Auto-generated method stub Log.e("Google", "Location Changed"); if (location == null) return; Log.e("latitude", location.getLatitude() + ""); Log.e("longitude", location.getLongitude() + ""); } } @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 } }; 

El código anterior le proporciona la ubicación en el método onLocationChanged .

Nota: he utilizado GPS_PROVIDER para obtener la ubicación. Hay otras maneras de obtener la ubicación actual también.

  • Android: Línea # 9 del archivo XML binario: error de inflado del fragmento de clase
  • Mapa sin conexión usando mapsforge en android
  • Android - fuera de la excepción de memoria al crear mapa de bits
  • ¿Cómo puedo ocultar mi clave de API de Google Maps al compartir mi código en github?
  • Ordenar una lista basada en otra lista
  • Mostrar una ubicación geográfica mediante webview
  • Biblioteca de memoria de montón sin restricciones para mapas de bits mediante NDK en Android
  • Conversión de mapa de bits: Creación de mapa de bits que excluye los lados transparentes del mapa de bits transparente
  • Android: escala y comprime un mapa de bits
  • Combo de IdentityHashMap y WeakHashMap
  • Obtención de 0.0 para latitud y longitud mientras muestra la ubicación actual en el mapa
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.