Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RedHot66

[Resolvido] Pegar localizações mais próximas do usuário com base em latitude e longitude - Google Maps

Recommended Posts

Pessoal, eu to conseguindo pegar a localização aproximada do usuário usando o google maps e to querendo pegar as localizações mais próximas dele.

Para isso acontecer, eu tenho uma div com latitude e longitude de endereços cadastrados.

Ex:

 

Localização do Usuario:

Latitude -> -23.6861250

Longitude -> -46..8754760

 

Endereços:

<div data-lat="-23.6821604" data-lon="-46.8754995"></div>
<div data-lat="-23.6821500" data-lon="-46.8754800"></div>
<div data-lat="-23.6821400" data-lon="-46.8754700"></div>
<div data-lat="-23.6821300" data-lon="-46.8754600"></div>

 

Eu tenho essas informações, só que agora gostaria de organizar as div's de acordo com a proximidade do usuário, ou seja, quanto mais perto um endereço estiver do usuário, a div vai ficando no topo.

Alguém tem alguma ideia de como fazer isso? Consigo fazer isso no próprio api do Google Maps ou usando algum tipo de lógica em PHP/JS para organizar as div's ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá RedHot66,

 

você pode calcular as distâncias, ordenar através dele e posteriormente exibir.

Dá uma olhada nesse post, lá tem a função de calcular distâncias entre dois pontos utilizando coordenadas.
https://pt.stackoverflow.com/questions/9128/como-obter-distância-dadas-as-coordenadas-usando-sql/9138

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por scsrat
      Preciso de ajuda com infowindow para polygonos multiplos está abrindo popup em todos com nome do ultimo lançamento somente, não estou dando conta em java, alguém se habilita?
       
      <?php      include 'export_xml.php'; ?> <html>     <head>         <meta charset='utf-8' />         <title>Google Maps: Storing Polygons in database</title>         <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDao9cuBBnlx14GWyG8ZnfZ1WjHj9oa6DA&callback=initMap"></script>         <script>                                  function initialize() {               var mapOptions = {                 zoom: 14,                 center: new google.maps.LatLng(-22.247791, -53.348142),                 mapTypeId: google.maps.MapTypeId.ROADMAP               };               var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);               var arr = new Array();               var polygons = [];               var bounds = new google.maps.LatLngBounds();                                             var xml = xmlParse(xmlString);               var subdivision = xml.getElementsByTagName("subdivision");                                                                for (var i = 0; i < subdivision.length; i++) {                 arr = [];                 html = [];                 var name = xml.documentElement.getElementsByTagName("subdivision").getAttribute("name");                 var address = xml.documentElement.getElementsByTagName("subdivision").getAttribute("address");                 var html = "<b>" + name + "</b> <br/>" + address + "<br><a href=# target=_blank>Clique aqui";                 //Tentando pegar dados dos polygons individuais                 var coordinates = xml.documentElement.getElementsByTagName("subdivision").getElementsByTagName("coord");                 for (var j = 0; j < coordinates.length; j++) {                   arr.push(new google.maps.LatLng(                     parseFloat(coordinates[j].getAttribute("lat")),                     parseFloat(coordinates[j].getAttribute("lng"))                   ));                   bounds.extend(arr[arr.length - 1])                 }                 polygons.push(new google.maps.Polygon({                   paths: arr,                   title: html,                   strokeColor: '#FF0000',                   strokeOpacity: 0.8,                   strokeWeight: 2,                   fillColor: '#FF0000',                   fillOpacity: 0.35                                    }));                 polygons[polygons.length - 1].setMap(map);                                  var infowindow = new google.maps.InfoWindow({                                        content: html // Tentando pegar dados dos polygons individuais                 });                                  google.maps.event.addListener(polygons[polygons.length - 1], 'click', function(event) {                     infowindow.open(map);                     infowindow.setPosition(event.latLng);                 });                                }                              // });               map.fitBounds(bounds);             }                          var xmlString = '<?php echo $textolinha; ?>';                          /**              * Parses the given XML string and returns the parsed document in a              * DOM data structure. This function will return an empty DOM node if              * XML parsing is not supported in this browser.              * @param {string} str XML string.              * @return {Element|Document} DOM.              */             function xmlParse(str) {               if (typeof ActiveXObject != 'undefined' && typeof GetObject != 'undefined') {                 var doc = new ActiveXObject('Microsoft.XMLDOM');                 doc.loadXML(str);                 return doc;               }               if (typeof DOMParser != 'undefined') {                 return (new DOMParser()).parseFromString(str, 'text/xml');               }               return createElement('div', null);             }             google.maps.event.addDomListener(window, 'load', initialize);                      </script>         <style>             #map-canvas,             body,             html {               height: 100%;               width: 100%;             }                      </style>     </head>     <body>                  <div id="map-canvas"></div>     </body> </html>  
       
      O include export_xml.php: Saida do xml
       
      <subdivisions> <subdivision name="teste1" address="0" > <coord lat="-22.246906181604235" lng="-53.343656079469014" /> <coord lat="-22.246160343589366" lng="-53.34298025442864" /> <coord lat="-22.246612168987966" lng="-53.34231238438393" /> <coord lat="-22.24577306351632" lng="-53.34163110329415" /> <coord lat="-22.246309297178513" lng="-53.34088544918801" /> <coord lat="-22.24709286679633" lng="-53.34152917935158" /> <coord lat="-22.247917069182467" lng="-53.342210460441365" /> <coord lat="-22.24876923872473" lng="-53.34288149840766" /> <coord lat="-22.248292595053044" lng="-53.343581554960544" /> <coord lat="-22.247442990211773" lng="-53.34287048089961" /> </subdivision> <subdivision name="teste2" address="0" > <coord lat="-22.24744605203327" lng="-53.3428707695716" /> <coord lat="-22.24664667240292" lng="-53.34224581487113" /> <coord lat="-22.24714566457059" lng="-53.341564533781344" /> <coord lat="-22.247922698585814" lng="-53.342200217317874" /> </subdivision> </subdivisions>  
    • Por ZioNN
      Estou tentando implementar lazy loading em um mapa do Google Maps que temos na home-page do site do cliente. É um iframe padrão do Maps no formato
       
      <iframe  src="https://www.google.com/maps/d/u/1/embed?mid=1qBlmrpdrcg46Esp-C88T1AMseNdz9k" width="100%" height="530"></iframe>
      Já tentei 3 plug-ins que encontrei em pesquisas na net, e nenhum deles funcionou. 

      O mapa é o item que mais pesa no carregamento inicial da home-page e está nos custando muito tempo e peso de loading.

      Foram:

      Lazyframe master
      Lazy Maps
      Jquery Lazy Master

      Qual a melhor solução para este caso, sem remover o mapa? 

      Obrigado
    • Por IgorBap
      Bom dia!
       
      Preciso escrever um código de algoritmo que realiza a conta de conversão de latitudes e longitudes em distância utilizando o Teorema de Pitágoras e não sei por onde começar.
      Encontrei esse calculo que poderá ser inserido.
       
      Triângulo Pitagórico

      Imaginemos 2 pontos P=(x1,y1) e Q=(x2,y2), obtemos a distância entre P e Q, traçando as projeções destes pontos
      sobre os eixos coordenados, obtendo um triângulo retângulo e usando o Teorema de Pitágoras.
      Pitagoras1.png (682 Bytes) Exibido 36730 vezes Assim, considerando 2 pontos de coordenadas (-22.902778, -43.206667) e (-23.548333, -46.636111)
      Calculando-se a distância entre eles, tem-se:
      Pitagoras2.png (2.14 KiB) Exibido 36729 vezes Pitagoras3.png (2.75 KiB) Exibido 36729 vezes A distância em graus resulta 3,4896744
      O raio da terra tem aproximadamente 6371km.
      Uma volta na terra tem 2 * pi * raio = 40030000m.
      Podemos, através de uma regra de 3 simples, obter a conversão do ângulo encontrado para uma distância em metros.
       

    • Por tarcioblanco@gmail.com
      Olá pessoal!
       
      Sou bem iniciante em programação (o projeto será quase todo terceirizado).
      Estou desenvolvendo um projeto de roteirização de entregas.
      O ideal seria ele rodar em WEB porém preciso de interface mobile para que os motoristas recebam as notificações do percurso e locais que precisam fazer as entregas entre outros, além de interface com impressoras na rede local.
      Seria o seguinte: o sistema precisa roteirizar as entregas dos motoristas, definindo a distribuição das entregas entre os motoristas (baseado em horário limite para entrega, posso ter 10 entregas que precisam ser feitas dentro de uma janela de 60 minutos por exemplo), então o sistema deveria dividir essas entregas entre os motoristas disponíveis, assim como a sequencia das entregas. pensando em otimizar tempo a agilizar as entregas. Além de notificar atrasos e informar que não é mais possivel adicionar entregas para tal horário pois as entregas existentes já consumiram o tempo disponível dos motoristas.
      Além da distribuição de roteiros, o sistema precisará de outras funções básicas como dashboard, recebimento de pedidos, encaminhar ordem de separação para o almoxarifado, acompanhamento dos entregadores no mapa, relatório sobre eficiência de cada motorista e integração com outros sistemas via Json (para receber os pedidos de entrega)
      Como é um sistema que ainda não existe, a ajuda que eu preciso é justamente sobre dicas de qual linguagem usar para criar esse sistema com foco em tempo de programação.
       
      Agradeço demais quem puder ajudar!
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.