Sei sulla pagina 1di 9

FACULTAD DE INGENIERA

ESCUELA DE INGENIERA DE SISTEMAS

Mapas

y Geolocalizacin

CURSO

PROGRAMACION
MOVILES

DE

DOCENTE

MENDEZ ZAVALETA OSCAR

APLICACIONES

INTEGRANTES :
ASTETE VASQUEZ ANDRES
PAIVA REATEGUI JORGE LEON
CICLO

TRUJILLO PER
2015

VII

Introduccin
La geolocalizacin, como ya saben, consiste en conocer automticamente la
ubicacin geogrfica en la que nos encontramos. Una funcionalidad que va
cobrando cada vez ms importancia, desde que en el 2009 se acuara este
trmino, utilizada sobretodo en el mundo mvil y en el desarrollo de
aplicaciones mviles.
Es por esta importancia en auge que cada vez ms smartphones, y no slo
los de gama alta, incluyen un GPS para poder determinar nuestra
localizacin sobre el mapa. Precisamente es el sector del desarrollo de
aplicaciones mviles el que est sabiendo ver la amplia variedad de
posibilidades que ofrece la geolocalizacin. De hecho, hay muchas maneras
en las que te puede ayudar esta funcionalidad desde tu dispositivo mvil.
Por ejemplo, utilizando los datos de localizacin de tu dispositivo, encontrar
comercios cercanos, cafeteras, cines, etc, o algo tan simple como
establecer la franja horaria en la que te encuentras simplemente
conociendo tu localizacin por GPS, informacin que obtiene de los diversos
satlites que orbitan la Tierra.
Aunque tambin puede recibir informacin a travs del wi-fi y bluetooth
adems del GPS, la localizacin final es una combinacin de los datos
obtenidos con esas herramientas. Es por eso que la ubicacin puede que no
siempre sea exacta, sino que ser una ubicacin aproximada.

Ventajas de la geolocalizacin en el desarrollo de


aplicaciones
El potente factor social es una de las mayores ventajas. Es decir, que el
usuario de nuestra app pueda compartir su ubicacin en redes sociales, ya
que dar a conocer nuestra aplicacin y nuestra marca a sus amigos y
contactos.
Del mismo modo puede ser una estrategia de marketing. La inclusin de la
geolocalizacin en el desarrollo de aplicaciones mviles ha permitido que
determinadas apps aumenten su uso y que ganen usuarios. Es sin duda una
funcionalidad en auge, sobretodo desde que aplicaciones mviles muy
conocidas como Foursquare, Google Maps o Facebook las incorporaran.
Dar informacin detallada al usuario sobre turismo, motor de apps de
realidad aumentada, bsqueda de informacin, aumentar el contexto, etc.
Algunos ejemplo de aplicaciones que utilizan geolocalizacin en estos
sentidos:
Swarm: La nueva aplicacin nacida de la transformacin de Foursquare nace
como red social y se basa en hacer check-in

TratoJusto :es una aplicacin de comercio colaborativo. Esta app te conecta


con personas cerca de ti que te pueden ayudar en lo que necesites, ya sea
con la mudanza, si necesitas un cargador de mvil, o quizs un fontanero
para arreglar tu grifo.
Nike+ Running: Esta app realiza un seguimiento de tus carreras y te ayuda a
alcanzar tus metas; ya sea que se trate de correr tu primera carrera o de
fijar un nuevo rcord personal. Utiliza el GPS para determinar dnde te
encuentras y cuantos kilmetros has recorrido y situarlo en el mapa.

Desarrollo
Disposicin inicial
-

Permisos en el Manifest, por el acceso a internet para el mapa y la


ubicacin del GPS requerimos estos 2 permisos bajo el tag:

<uses-permission android:name="android.permission.INTERNET" />


<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

Uso de la librera de mapas, tambin en el Manifest bajo el tag:

<uses-library android:name="com.google.android.maps" />

En la clase de la actividad principal, utilizaremos herencia


de MapActivity para facilitarnos el manejo del mapa e
implementaremos la interfaz LocationListenerpara detectar los
cambios en la localizacin.
Por heredar de MapActivity debemos implementar el mtodo:

@Override
protected boolean isRouteDisplayed() {
return false;
}

Por implementar LocationListener debemos realizar los siguientes


mtodos:

@Override
public void onLocationChanged(Location location) {}

@Override
public void onProviderDisabled(String provider) {}

@Override

public void onStatusChanged(String provider, int status, Bundle extras) {}

@Override
public void onProviderEnabled(String provider) {}

Diseo
-

Utilizaremos una vista especial para el mapa es necesario un key


para la utilizacin del servicio de Google Maps y depende
directamente del certificado utilizado para firmar las aplicaciones,
el valor del atributo android:apiKey que aparece en el cdigo es
vlida para mi certificado.

<com.google.android.maps.MapView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="0xJ4uwRGDV296srCn4Iiy46oFmd1jecLr07BsAA"
/>

Agregando cdigo
-

La clase de la Activity para nuestra aplicacin extender


de MapActivity para facilitarnos el manejo de la visualizacin del
mapa e implementar LocationListenerpara el manejo de las
actualizaciones de ubicacin.

public class Main extends MapActivity implements LocationListener

De los mtodos disponibles, utilizaremos onProviderDisabled para


forzar al usuario a tener el GPS funcionando antes de que la
aplicacin inicie.

@Override
public void onProviderDisabled(String provider) {

Intent intent = new Intent( android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS


startActivity(intent);

Vamos a mostrar un marker en las diferentes ubicaciones


detectadas, para ello haremos una clase que represente
este Overlay mostrando la imagen seleccionada. Para este ejemplo
se utilizar la imagen del cono, al definirla dentro de la misma
clase de laActivity principal entonces ser una clase privada.

class MyOverlay extends Overlay { }

Tendremos una variable de instancia representando el punto


donde se colocar el marcador y ser un parmetro recibido por el
constructor:

GeoPoint point;

/* El constructor recibe el punto donde se dibujar el marker */


public MyOverlay(GeoPoint point) {
super();
this.point = point;
}

Sobrecargaremos el mtodo draw para dibujar nuestro marker:

@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
super.draw(canvas, mapView, shadow);

//se traduce el punto geo localizado a un punto en la pantalla


Point scrnPoint = new Point();
mapView.getProjection().toPixels(this.point, scrnPoint);

//se construye un bitmap a partir de la imagen


Bitmap marker = BitmapFactory.decodeResource(getResources(), R.drawable.icon);

//se dibuja la imagen del marker


canvas.drawBitmap(marker, scrnPoint.x - image.getWidth() / 2, scrnPoint.y
marker.getHeight() / 2, null);

return true;
}

El cdigo completo de la clase para los overlays es el siguiente:

class MyOverlay extends Overlay {


GeoPoint point;

//El constructor recibe el punto donde se dibujar el marker


public MyOverlay(GeoPoint point) {
super();
this.point = point;
}

@Override
public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
super.draw(canvas, mapView, shadow);

//se traduce el punto geolocalizado a un punto en la pantalla */


Point scrnPoint = new Point();
mapView.getProjection().toPixels(this.point, scrnPoint);

//se construye un bitmap a partir de la imagen


Bitmap marker = BitmapFactory.decodeResource(getResources(), R.drawable.icon);

// se dibuja la imagen del marker

canvas.drawBitmap(marker, scrnPoint.x - marker.getWidth() / 2, scrnPoint.y - mar

return true;
}
}

Para ir dibujando estos markers al principio y cada vez que haya


una actualizacin de la ubicacin, utilizaremos un mtodo nuevo
con la firma:

protected void updateLocation(Location location)

Obtenemos el MapView y de l un MapController:

MapView mapView = (MapView) findViewById(R.id.mapview);


MapController mapController = mapView.getController();

Construimos un punto
del Location recibido:

partir

de

la

latitud

longitud

GeoPoint point = new GeoPoint((int) (location.getLatitude() * 1E6), (int)


(location.getLongitude() * 1E6));

Movemos el centro del mapa hacia esta ubicacin:

mapController.animateTo(point);
mapController.setZoom(15);

Posterior a esto, intentaremos hacer geolocalizacin del punto,


obtener una direccin a partir de las coordenadas del punto.
Primero instanciamos un objeto Geocoder que responder de
acuerdo a la localidad configurada en el telfono.

Geocoder geoCoder = new Geocoder(this, Locale.getDefault());

A travs de este Geocoder y con el punto de la ubicacin


intentamos obtener alguna direccin asociada y se lo hacemos
saber al usuario por medio de un toast (aviso).

try {
List<Address> addresses = geoCoder.getFromLocation(point.getLatitudeE6()

/ 1E6,

point.getLongitudeE6() / 1E6, 1);


String address = "";
if (addresses.size() > 0) {
for (int i = 0; i < addresses.get(0).getMaxAddressLineIndex(); i++)
address += addresses.get(0).getAddressLine(i) + "\n";
}
Toast.makeText(this, address, Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}

Por
ltimo,
instanciamos
la
clase MyOverlay construda
previamente para agregar un nuevo marker en el listado de
overlays del mapa e invalidamos la vista para que vuelva a
dibujarse todo.

List<Overlay> mapOverlays = mapView.getOverlays();


MyOverlay marker = new MyOverlay(point);
mapOverlays.add(marker);
mapView.invalidate();

En
el
mtodo onCreate vamos
a
instanciar
un LocationManager para mostrar el primer marker y solicitar
actualizaciones:

MapView mapView = (MapView) findViewById(R.id.mapview);


//habilitamos el control de zoom
mapView.setBuiltInZoomControls(true);

LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_


SERVICE);
updateLocation(locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER));
/* se actualizar cada minuto y 50 metros de cambio en la localizacin
mientras ms pequeos sean estos valores ms frecuentes sern las actualizaciones*/
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 6000, 50, this);

Luego en el mtodo onLocationChanged llamamos a nuestro


mtodoupdateLocation para que dibuje un nuevo marker cada vez
que se actualice la localizacin:

@Override
public void onLocationChanged(Location location) {
updateLocation(location);
}

Potrebbero piacerti anche