1 votos

Obtener la zona de un mapa con Google Maps

Tengo como referencia este mapa de miraflores el cual esta dividido en 14 Zonas enter image description here

Lo que tengo que hacer es que con google maps obtener la latitud y la longitud, eso ya lo tengo y de acuerdo a donde señale me cambia la latitud y la longitud: enter image description here La parte señalada con morado, vendría a ser la Zona8 de Miraflores, he creado una función la cual es la siguiente:

function getzone($latitude,$longitude){
    //ZONA8
    if(($longitude<-77.02444300804291)
        &&($longitude>-77.03382805738602)
        &&($latitude<-12.119125334864162))
    {
        return "8";
    }
}

Pero con ello solo me obtiene una forma cuadrada, pero si en caso yo apuntara en los puntos rojos del segundo mapa igual me daría como resultado 8 ya que con los if que tengo solo formarían un cuadrado; como podría hacer darle la forma anormal de la zona y que no me pase lo de los puntos rojos.

1voto

Miguel Sirna Puntos 495

Acabo de mejorar el código:

function getzone($latitude,$longitude){
    //ZONA8
    if(($longitude<-77.02444300804291)
        &&($longitude>-77.03382805738602)
        &&($latitude<-12.119125334864162))
    {
        if(($latitude>-12.119922552754979)
            &&($longitude<-77.02590749416504))
        {
            return "8";
        }elseif(($latitude<-12.119938287294652)
            &&($longitude<-77.02580557022247)){
            return "8";
        }elseif(($latitude<-12.120420812727117)
            &&($longitude<-77.02549979839478)){
            return "8";
        }elseif(($latitude<-12.12127047495426)
            &&($longitude<-77.0252530351654)){
            return "8";
        }elseif(($latitude<-12.122120134475324)
            &&($longitude<-77.02487752590332)){
            return "8";
        }elseif(($latitude<-12.123756508149919)
            &&($longitude<-77.02442691478882)){
            return "8";
        }
    }
}

pero con esos if else solo toma en cuenta la siguientes partes: enter image description here Lo que faltaría seria la parte de abajo la cual no se como hacer para que no se cruce con las otras consultas

0voto

Moisés AC Puntos 530

Hola. Parece un poco complicado el tema. Yo crearía las formas que comprenden cada una de las zonas mediante grupos de coordenadas, p.ej. la zona 6 parece un triangulo perfecto, quedaría definida por 3 pares de coordenadas, otras zonas tienen muchos pares según lo complicado de su trazado. Sería mapear cada zona añadiendo cada par de coordenadas de cada vértice que 'dibuja' la zona hasta tenerlas todas. Luego cuando tienes que saber a que zona pertenece un punto concreto, buscar los pares que 'rodean' al par dado para encontrar la zona a la que pertenece.

Hay para un rato pero creo que puede ser una solución.

Un saludo.

0 votos

Estas son las coordenadas exactas con las cuales obtengo la ZONA 8: -77.033145,-12.124340 -77.033826,-12.123774 -77.033746,-12.119190 -77.026118,-12.119211 -77.025156,-12.122122 -77.024420,-12.125295 -77.031673,-12.124154 -77.032468,-12.123852 -77.033145,-12.124340 Abajo le dejare la imagen de la forma.

0voto

Moisés AC Puntos 530

Si ya tienes los pares de coordenadas que definen cada zona queda averiguar donde cae un punto. La primera referencia sera el par de coordenadas más próximo al punto. Este par de coordenadas pertenecerá a la zona en cuestión aunque habrá al menos dos zonas posibles. Ahora se pueden restar las coordenadas del punto con las más próximas para saber si esta a derecha o izquierda, arriba y abajo de este vértice, a partir de ahí ver hacia donde se extiende cada una de las zonas que tienen el vertice para saber donde esta el punto.

Saludos.

0 votos

Eso me daría como resultado la forma perfecta sin que se salga del borde? por que de otra forma no me serviría :/

0voto

Miguel Sirna Puntos 495

enter image description here

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: