sábado, 25 de abril de 2015

Crear app google map

Blog frankinstain XD

Google Maps (API v2)

Google Maps nos proporciona un servicio de cartografía online que podremos utilizar en nuestras aplicaciones Android. Veamos las claves necesarias para utilizarlo. Estudiaremos la versión 2 del API que incorpora interesantes ventajas respecto a la versión anterior. Entre estas ventajas destaca el menor tráfico intercambiado con el servidor, la utilización de fragments y los gráficos en 3D. Como inconveniente resaltar que la nueva versión solo funciona en el dispositivo con Google Play instalado.

Conviene destacar que a diferencia de Android, Google Maps no es un software libre, por lo que está limitado a una serie de condiciones de servicio. Podemos usarlo de forma gratuita siempre que nuestra aplicación no solicite más de 15.000 codificaciones geográficas al día. Podemos incluir propaganda en los mapas o incluso podemos usarlo en aplicaciones móviles de pago (para sitios Web de pago es diferente). Una información más completa de este API la encontramos en:

Obtención de una clave Google Maps
Para poder utilizar este servicio de Google, igual como ocurre cuando se utiliza desde una página web, va a ser necesario registrar la aplicación que lo utilizará. Tras registrar la aplicación se nos entregará una clave que tendremos que indicar en la aplicación.

Realmente vamos a necesitar dos claves diferentes, una durante el proceso de desarrollo y otra para la aplicación final. La razón es que se genera una clave diferente en función del certificado digital con la que se firma la aplicación. En la fase de desarrollo las aplicaciones también han de ser firmadas digitalmente, pero en este caso el SDK utiliza un certificado especial (el certificado de depuración), utilizado solo en la fase de desarrollo.

Veamos cómo obtener la clave Google Maps para el certificado de depuración. En caso de querer distribuir tu aplicación, una vez terminada tendrás que firmarla con un certificado digital propio. Este proceso se explica en el último capítulo. Recuerda que será necesario reemplazar la clave Google Maps, por otra, esta última asociada al certificado digital usado en la fase de distribución.



The "ARM EABI v7a System Image" must be available. Install it via the Android SDK manager: Android SDK manager



Otra configuracion diferente   -----------------------



Applies to:
  • Android Studio (Beta) 0.8.6
  • Google Android Maps API

What?
I am writing an app for a tablet running Android and wanted to include a Google Map. The following exercise focuses solely on creating an app which opens Google Maps at your current location.

How?
I couldn't find any instructions using the tools I had (Android Studio) which is why I've written this article.
  1. Start "Android Studio"
  2. Go to File and create a New Project...

  3. I'm developing on a Tablet so I select Phone and Tablet then a relatively old version of the Android OS:

  4. Add an activity to Mobile: select Google Maps Activity:

  5. Change the Title to what you want (don't change the activity or layout) and click on Finish:

  6. Get yourself a developers' Google Android Maps API Key (not necessarily the same as Google API Key) and enter it as instructed:

  7. Change the Java file to open on your current location, find the MapsActivity.java file and open it:

  8. Change the function setUpMap() to the following code

    1.  private void setUpMap() { 
    2.          mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker").snippet("Snippet")); 
    3.   
    4.          // Enable MyLocation Layer of Google Map 
    5.          mMap.setMyLocationEnabled(true); 
    6.   
    7.          // Get LocationManager object from System Service LOCATION_SERVICE 
    8.          LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    9.   
    10.          // Create a criteria object to retrieve provider 
    11.          Criteria criteria = new Criteria(); 
    12.   
    13.          // Get the name of the best provider 
    14.          String provider = locationManager.getBestProvider(criteria, true); 
    15.   
    16.          // Get Current Location 
    17.          Location myLocation = locationManager.getLastKnownLocation(provider); 
    18.   
    19.          // set map type 
    20.          mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
    21.   
    22.          // Get latitude of the current location 
    23.          double latitude = myLocation.getLatitude(); 
    24.   
    25.          // Get longitude of the current location 
    26.          double longitude = myLocation.getLongitude(); 
    27.   
    28.          // Create a LatLng object for the current location 
    29.          LatLng latLng = new LatLng(latitude, longitude); 
    30.   
    31.          // Show the current location in Google Map 
    32.          mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); 
    33.   
    34.          // Zoom in the Google Map 
    35.          mMap.animateCamera(CameraUpdateFactory.zoomTo(14)); 
    36.          mMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)).title("You are here!").snippet("Consider yourself located")); 
    37.      } 
    1. If you are prompted to import the classes then agree by clicking OK:

    2. If you are not prompted,
      1. you should see some of your code go red like in the following screenshot:

      2. Focus the cursor on the word and hold down the key and press Enter, then import each class:

  9. Your code will now include the imported classes near the beginning, so TEST it!


Addtional:
Problems animating the camera to your current location? I had to add the following:

  1.  LatLng myCoordinates = new LatLng(latitude, longitude); 
  2.  CameraUpdate yourLocation = CameraUpdateFactory.newLatLngZoom(myCoordinates, 12); 
  3.  mMap.animateCamera(yourLocation); 

Additional Additional:
A little more control on the animation?

  1.  CameraPosition cameraPosition = new CameraPosition.Builder(
  2.      .target(myCoordinates)      // Sets the center of the map to LatLng (refer to previous snippet) 
  3.      .zoom(17)                   // Sets the zoom 
  4.      .bearing(90)                // Sets the orientation of the camera to east 
  5.      .tilt(30)                   // Sets the tilt of the camera to 30 degrees 
  6.      .build();                   // Creates a CameraPosition from the builder 
  7.  map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 

Just in case: AndroidManifest.xml
The example above should have populated this correctly but if you are still getting problems, I have the following fields that I also use related to Google Maps v2:

  1.  <meta-data 
  2.          android:name="com.google.android.gms.version" 
  3.          android:value="@integer/google_play_services_version" /> 
  4.  <meta-data 
  5.          android:name="com.google.android.maps.v2.API_KEY" 
  6.          android:value="@string/google_maps_key" /> 
  7.  <permission 
  8.          android:name="package.name.permission.MAPS_RECEIVE" 
  9.          android:protectionLevel="signature" /> 
  10.  <uses-feature 
  11.          android:glEsVersion="0x00020000" 
  12.          android:required="true" /> 
  13.  <uses-library  
  14.          android:name="com.google.android.maps" /> 
  15.  <uses-permission  
  16.          android:name="package.name.permission.MAPS_RECEIVE" /> 
  17.  <uses-permission  
  18.          android:name="android.permission.INTERNET" /> 
  19.  <uses-permission  
  20.          android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
  21.  <uses-permission  
  22.          android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
  23.  <uses-permission  
  24.          android:name="android.permission.ACCESS_FINE_LOCATION" /> 

Last Additional
Ensure that when Google asks for your Android API key, you enter the production key (which may be the same as your testing key); the one from your app and not from your computer (as other people don't use your computer to access the service). If your fellow testers only see a grey map, just double-check the key is the right one given to Google Maps.

Follow On Article/Sequel
Next: Article on separating the map into a sub-activity rather than it being the main activity - Android OS: Add GoogleMap as fragment.

No hay comentarios:

Publicar un comentario