Como hacer un Polyline en google map con android studio guia basica

Hola a todos, espero que estén muy bien en sus labores y estudios hoy veremos algo muy interesante, veremos como hacer trazos de un punto hacia otro punto en Google Map a esto también se le conoce como Polyline.

Como Hacer un Polyline en Google Map con Android Studio Guia Básica

Les comento que haremos nuestro google map en un fragment, así que empezaremos por ello vamos a nuestro activity_main y le agregamos el fragment

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.androfast.pc.apppolylinemapbasico.MainActivity">

<fragment
android:id="@+id/map"
android:layout_width="368dp"
android:layout_height="495dp"
android:layout_alignParentTop="true"
class="com.google.android.gms.maps.SupportMapFragment"
tools:layout_editor_absoluteY="8dp"
tools:layout_editor_absoluteX="8dp" />

</android.support.constraint.ConstraintLayout>

Ahora debemos ir a nuestro buil.gradle y debemos agregar las siguientes tres lineas, dentro de dependencies

    compile 'com.google.android.gms:play-services-location:9.8.0'
compile 'com.google.android.gms:play-services-maps:9.8.0'
compile 'com.google.maps.android:android-maps-utils:0.4'

Ahora nos vamos a nuestro AndroidManifest y  debemos darle algunos permisos y poner nuestra api key de google map en la linea que esta en rojo:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.androfast.pc.apppolylinemapbasico">

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.androidmorefast.pc.appmostrardireccionmapa.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-feature
android
:glEsVersion="0x00020000"
android
:required="true" />
<uses-permission android:name="android.permission.INTERNET" />

<application
android
:allowBackup="true"
android
:icon="@mipmap/ic_launcher"
android
:label="@string/app_name"
android
:roundIcon="@mipmap/ic_launcher_round"
android
:supportsRtl="true"
android
:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android
:name="com.google.android.maps.v2.API_KEY"
android
:value="Aquí va tu Api Key" />
</application>
</manifest>

Ahora nos vamos a nuestro MainActivity y revisaremos un poco el código:

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Polygon;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;


public class MainActivity extends AppCompatActivity implements OnMapReadyCallback,
GoogleMap.OnPolylineClickListener, GoogleMap.OnPolygonClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment fm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
fm.getMapAsync(this);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

return;
}
}
public void onMapReady(GoogleMap googleMap) {

Polyline polyline1 = googleMap.addPolyline(new PolylineOptions()
.clickable(true)
.add(
new LatLng(-35.016, 143.321),
new LatLng(-34.747, 145.592),
new LatLng(-34.364, 147.891),
new LatLng(-33.501, 150.217),
new LatLng(-32.306, 149.248),
new LatLng(-32.491, 147.309)));

googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-23.684, 133.903), 4));

googleMap.setOnPolylineClickListener(this);
googleMap.setOnPolygonClickListener(this);
}

@Override
public void onPolygonClick(Polygon polygon) {

}
@Override
public void onPolylineClick(Polyline polyline) {

}
}
REVISANDO CÓDIGO

Notaran que hay unas coordenadas, bueno no hay que ser genio para darse cuenta que son referencias a la latitud y la longitud, aquí se ven 6 puntos trazados y tu programación dependerá de cuantos puntos desees insertar para llegar a tu destino, recuerda que seria imposible hacer una linea de dos puntos o que sea solo recta, pues en el camino hay paredes y obstáculos y ahí es donde se ponen los diferentes puntos para ir a la izquierda o ir a la derecha.

        Polyline polyline1 = googleMap.addPolyline(new PolylineOptions()
.clickable(true)
.add(
new LatLng(-35.016, 143.321),
new LatLng(-34.747, 145.592),
new LatLng(-34.364, 147.891),
new LatLng(-33.501, 150.217),
new LatLng(-32.306, 149.248),
new LatLng(-32.491, 147.309)));

Ahora revisamos esta linea, su funciona es la cámara, la cual nos permitirá iniciar nuestra aplicación o mas lejos o mas cerca de una dirección los primeros numero hacen referencia a que empezaremos justo ahí, continuación hay un numero 4 ese cuatro hace referencia a la distancia a mayor numero mas se acercara la cámara del mapa.

googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-23.684, 133.903), 4));

Bien eso es todo espera les sirva de algo cuídense, hasta otro tutorial:

Espero les haya gustado, a continuación les dejo el proyecto para que lo prueben.


Nota: Si usas Genymotion, para que funcione correctamente el gps en genymotion debes pasar por acá primero instalar paso a paso google play servicios en Genymotion.

 ENLACES DE INTERES:

Como obtener la Ubicación del GPS-Android
Todo sobre como usar el controlador spinner en android
como hacer una aplicación que lea archivos pdf online en android studio

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

WhatsApp chat