entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Buenos dias tengo un problema con asignarle datos a un array que tengo creado estoy intentando asignarle unas coordenadas new google.maps.LatLng(data[i].coordenadas_x, data[i].coordenadas_y); pero no me pinta el poligono en el mapa agradecere toda la ayuda muchas gracias, aquí muestro el código,

    var urlMunmorelia = "/admin/mapas/coordenadas_morelia";
    var poliMorelia;
    var coorMorelia = [];

    $.get(urlMunmorelia)
    .done(function(data){
        $.each(data, function(i){
            // console.log(i);
            coorMorelia = new google.maps.LatLng(data[i].coordenadas_x, data[i].coordenadas_y);
            // console.log($(coorMorelia).text());

        });
        coorMorelia = [
            new google.maps.LatLng(data[0].coordenadas_x, data[0].coordenadas_y)
        ];
        console.log($(coorMorelia).text());
        poliMorelia = new google.maps.Polygon({
            paths: coorMorelia,
            strokeColor: '#FF0000',
            strokeOpacity: 0.8,
            strokeWeight: 2,
            fillColor: '#FF0000',
            fillOpacity: 0.35
        });
        poliMorelia.setMap(map);

    }).fail(function(data){
        console.log(data);
    });

1 Respuesta

3votos

white Puntos75880

Hola @Asaek,

En esta linea:

coorMorelia = [
        new google.maps.LatLng(data[0].coordenadas_x, data[0].coordenadas_y)
    ];

Estas definiendo el array coorMorelia como un array de un solo elemento (coordenada).

y en esta linea:

coorMorelia = new google.maps.LatLng(data[i].coordenadas_x, data[i].coordenadas_y);

estas definiendo coorMorelia por una coordenada.


Intenta agregar las coordenadas en cada iteración con Array.push

$.each(data, function(i){
    coorMorelia.push(new google.maps.LatLng(data[i].coordenadas_x, data[i].coordenadas_y));
});

elimina esta linea, donde redefines coorMorelia:

coorMorelia = [
        new google.maps.LatLng(data[0].coordenadas_x, data[0].coordenadas_y)
    ];

1voto

Asaek comentado

Muchas Gracias White, por ayudarme pero aun tengo un detalle no se esta pintando el polígono mi código lo tengo asi:

var urlMunmorelia = "/admin/mapas/coordenadas_morelia";
    var poliMorelia;
    var coorMorelia = [];

    $.get(urlMunmorelia)
    .done(function(data){
        $.each(data, function(i){

            coorMorelia.push(new google.maps.LatLng(data.coord_x[i], data.coord_y[i]));

        });

        coorMorelia.push(new google.maps.LatLng(data.coord_x[0], data.coord_y[0]));
        // console.log($(coorMorelia).text());
        poliMorelia = new google.maps.Polygon({
            paths: coorMorelia,
            strokeColor: '#FF0000',
            strokeOpacity: 0.8,
            strokeWeight: 2,
            fillColor: '#FF0000',
            fillOpacity: 0.35
        });
        poliMorelia.setMap(map);

    }).fail(function(data){
        console.log(data);
    });

Saludos

0voto

white comentado

podrias colocar: console.log(data); despues de $.each(data, function(i){ y ver que contiene? o poner el codigo json en esta pregunta.

remueve esta linea:

coorMorelia.push(new google.maps.LatLng(data.coord_x[0], data.coord_y[0]));

y nos cuentas despues.

0voto

Asaek comentado

ok mira ya quite esa linea segun era para cerrar el poligono pero igual eso lo agrego en la BD, mira ahorita haciendo pruebas agregue un `$.each(data, function(i){

            coorMorelia.push(new google.maps.LatLng(data.coord_x[i], data.coord_y[i]));
            console.log(data.coord_x[i]);

        });

y me arrojo en la consola esto;

2 undefined

lo extraño es que si pongo algo asi console.log(data.coord_x[100]); si me arroja el resultado dentro y fuera del ciclo, muchas gracias por tu ayuda white y quedo a comentarios de todos, saludos y gracias a seguir aprendiendo

0voto

white comentado

Accediendo a /admin/mapas/coordenadas_morelia desde tu navegador que código obtienes?
Podrías pegar aquí ese código?

0voto

Asaek comentado

Hola saludos de nuevo mira este es un pequeño ejemplo de todo el JSON que tengo en si son como 4700 coordenadas pero esta es su estructura

{
"coord_x": [
    "-101.269905144175",
    "-101.26978664005",
    "-101.268679836337",
    "-101.266853829108",
    "-101.264835826582",
    "-101.263946903691",
    "-101.263134913613",
    "-101.261311800299",
    "-101.270183683177",
    "-101.269905144175"
],
"coord_y": [
    "19.8580724890365",
    "19.8579228405864",
    "19.8578568610397",
    "19.8582533481894",
    "19.8586810399096",
    "19.8590676366259",
    "19.8596592135622",
    "19.8608926430664",
    "19.8610490099807",
    "19.861252422125"
]

}

0voto

white comentado

me parece que las coordenadas no estan del todo correctas, estas seguro que coord_x no debería contener el array de coord_y, y coord_y el de coord_x?

intenta con este codigo:

var urlMunmorelia = "https://jsonblob.com/api/jsonBlob/55144362e4b05f8280fd42be",
    poliMorelia,
    coorMorelia = [];

$.ajax({
    method : 'GET',
    dataType : 'json',
    url : urlMunmorelia,
    success : function(data)
    {
        for(var i = 0; i <= data['coord_x'].length; i++)
        {   
            coorMorelia.push(new google.maps.LatLng(data.coord_x[i], data.coord_y[i]));
        }

        poliMorelia = new google.maps.Polygon({
            paths: coorMorelia,
            strokeColor: '#FF0000',
            strokeOpacity: 0.8,
            strokeWeight: 2,
            fillColor: '#FF0000',
            fillOpacity: 0.35
        });

        poliMorelia.setMap(map);
    }
});

si no funciona de esa manera, intenta de cambiar coord_x por coord_y en tu json, pudiendo estar de esta forma:

https://jsonblob.com/55144362e4b05f8280fd42be


te dejo un demo con tu codigo en jsbin:

http://jsbin.com/nobovayuzo
http://jsbin.com/nobovayuzo/edit

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta