ubicaciĆ³n ubicacion studio obtener longitud latitud gratis google geolocalizacion crear coordenadas app actual android dictionary onclick osmdroid

longitud - obtener ubicacion android studio 2018



obtener la latitud y la longitud de una ubicaciĆ³n clicada en el mapa en osmdroid (2)

onSingleTapConfirmed crear una Overlay y anular la onSingleTapConfirmed .

Prueba esto:

Overlay touchOverlay = new Overlay(this){ ItemizedIconOverlay<OverlayItem> anotherItemizedIconOverlay = null; @Override protected void draw(Canvas arg0, MapView arg1, boolean arg2) { } @Override public boolean onSingleTapConfirmed(final MotionEvent e, final MapView mapView) { final Drawable marker = getApplicationContext().getResources().getDrawable(R.drawable.markericon); Projection proj = mapView.getProjection(); GeoPoint loc = (GeoPoint) proj.fromPixels((int)e.getX(), (int)e.getY()); String longitude = Double.toString(((double)loc.getLongitudeE6())/1000000); String latitude = Double.toString(((double)loc.getLatitudeE6())/1000000); System.out.println("- Latitude = " + latitude + ", Longitude = " + longitude ); ArrayList<OverlayItem> overlayArray = new ArrayList<OverlayItem>(); OverlayItem mapItem = new OverlayItem("", "", new GeoPoint((((double)loc.getLatitudeE6())/1000000), (((double)loc.getLongitudeE6())/1000000))); mapItem.setMarker(marker); overlayArray.add(mapItem); if(anotherItemizedIconOverlay==null){ anotherItemizedIconOverlay = new ItemizedIconOverlay<OverlayItem>(getApplicationContext(), overlayArray,null); mapView.getOverlays().add(anotherItemizedIconOverlay); mapView.invalidate(); }else{ mapView.getOverlays().remove(anotherItemizedIconOverlay); mapView.invalidate(); anotherItemizedIconOverlay = new ItemizedIconOverlay<OverlayItem>(getApplicationContext(), overlayArray,null); mapView.getOverlays().add(anotherItemizedIconOverlay); } // dlgThread(); return true; } }; mapView.getOverlays().add(touchOverlay);

Me las arreglé para escribir una aplicación de Android que lo usa para rastrear la ubicación del usuario y mostrarla en el mapa con un marcador. Aquí está el código relevante:

public class MainActivity extends Activity implements LocationListener { public MapView mapView; private LocationManager locationManager; MyItemizedOverlay myItemizedOverlay = null; Drawable marker; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mapView = (MapView) this.findViewById(R.id.mapview); mapView.setUseDataConnection(false); mapView.setClickable(true); mapView.setBuiltInZoomControls(true); mapView.setMultiTouchControls(true); mapView.setUseDataConnection(false); mapView.setFocusable(true); mapView.setFocusableInTouchMode(true); mapView.getController().setZoom(16); // set initial zoom-level, depends // on your need marker = getResources().getDrawable(android.R.drawable.star_on); int markerWidth = 1; int markerHeight = 1; marker.setBounds(0, markerHeight, markerWidth, 0); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); // You can also use LocationManager.GPS_PROVIDER and // LocationManager.PASSIVE_PROVIDER } @Override public void onLocationChanged(Location location) { int lat = (int) (location.getLatitude() * 1E6); int lng = (int) (location.getLongitude() * 1E6); GeoPoint point = new GeoPoint(lat, lng); mapView.getController().setCenter(point); mapView.getController().animateTo(point); mapView.invalidate(); ResourceProxy resourceProxy = new DefaultResourceProxyImpl( getApplicationContext()); myItemizedOverlay = new MyItemizedOverlay(marker, resourceProxy); mapView.getOverlays().clear(); mapView.getOverlays().add(myItemizedOverlay); myItemizedOverlay.addItem(point, "myPoint1", "myPoint1"); TextView tv1 = (TextView) findViewById(R.id.myLat); tv1.setText("Lat is " + lat); TextView tv2 = (TextView) findViewById(R.id.myLong); tv2.setText("Long is " + lng); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { }

}

Ahora necesito una forma de obtener las propiedades de latitud y longitud de una ubicación clicada en el mapa. Quiero decir que necesito algo similar al siguiente código (que existe para google map api) en osmdroid.

google.maps.event.addListener(map, ''click'', function(event) { YourHandler(event.latLng);});


Si implementa MapEventsReceiver , puede usar la función singleTapConfirmedHelper() que le proporciona directamente un objeto GeoPoint de la ubicación en la que se hace clic. Aquí hay un ejemplo:

public class MapActivity extends AppCompatActivity implements MapEventsReceiver { ... @Override public boolean singleTapConfirmedHelper(GeoPoint p) { mapController.animateTo(p); return true; } }