TransWikia.com

(Google Maps API) Como obtener *coordenadas* de un array de Markers en Javascript

Stack Overflow en español Asked by Ricardo Sauceda on August 26, 2021

Con mi código creo un arreglo de Markers de Google Maps, en donde necesito el puntoA y el puntoB para pintar una ruta en el mapa y calcular los kilometros.

function addMarker(location, addrs, counter) {

            if(counter <= 2){ 

                    marker = new google.maps.Marker({
                    position: location,
                    map: exports.map,
                    animation: google.maps.Animation.DROP,
                    title: "Point: "+ counter + "Address:" + addrs
                });

                exports.markers.push(marker);

            }else{
                calculateRoute();
                alert("Ya terminaste de seleccionar la ruta");

            }
        } // Sets the map on all markers in the array. 

Una vez que capturo mis 2 Markes, quisiera mostrar y pintar la ruta entre el puntoA y el puntoB.

Entonces, hice una function llamada calculateRute() en donde leo mi arreglo de Markers y obtengo las position (que son mis coordenadas del PUNTOA y el PUNTOB), lo asigno a otro arreglo en donde solo quiero poner las coordenadas y las muestro en un ALERT(), hasta acá todo bien.

function calculateRoute(){
        
        for (var i = 0; i < exports.markers.length; i++) {
            maping[i] = exports.markers[i].position;
            //show my coordenates
            alert(maping[i]);
        }

        var request = {
            origin: maping[0],
            destination: maping[1],
            travelMode: 'DRIVING'
        }

        directionsService.route(request, function(result, status){

            if (status=="OK") {

                directionsDisplay.setDirections(result);
            }
        })
    }

introducir la descripción de la imagen aquí
introducir la descripción de la imagen aquí

Cuando vamos a request y le pasamos los atributos del ARRAY de COORDENADAS (puntoA y puntoB) por su posición a ORIGIN y DESTINATION, NO ME MUESTRA NADA.

introducir la descripción de la imagen aquí

No logro obtener como tal las coordenadas y asignarlas, no entiendo porque no funciona asi como lo estoy manejando.

Lógico, al final solo pinta mis dos Markers y no me pinta la ruta porque no obtengo las coordenadas.

introducir la descripción de la imagen aquí

One Answer

Logre obtener la longitud y la latitud haciendo 2 arreglos, no creo que sea la mejor opción, pero me ha funcionado hasta ahora:

function calculateRoute(){

            var lang = [];
            var lat = [];

            for (var i = 0; i < exports.markers.length; i++) {
                lat[i] = exports.markers[i].getPosition().lat();
                lang[i] = exports.markers[i].getPosition().lng();
                //alert("LAT: " + lat[i] + " LANG: " + lang[i]);
            }

            var location_a, location_b;

            location_a = lat[0] +","+ lang[0];
            location_b = lat[1] +","+ lang[1];
            

            var request = {
                origin: location_a,
                destination: location_b,
                travelMode: 'DRIVING'
            }

            directionsService.route(request, function(result, status){

                if (status=="OK") {
                    setMapOnAll(null);
                    directionsDisplay.setMap(map);
                    directionsDisplay.setDirections(result);
                    // Calculate and display the distance between markers
                    calculateDistance(location_a, location_b);
                }
            })
        }

Correct answer by Ricardo Sauceda on August 26, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP