Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Latitude e Longitude Estou tentando colocar latitude e longitude da minha atual localização mas vi que não existe nenhuma biblioteca para isso. Alguém tem conhecimento nessa parte. Descrição: Os usuários do sistema trabalham externos e ao cadastrar um novo cliente eu quero ter a latitude e longitude de onde esse usuário fez o cadastro do cliente. Os usuários usam o sistema pelo celular....
LH
Latitude e Longitude  
Estou tentando colocar latitude e longitude da minha atual localização mas vi que não existe nenhuma biblioteca para isso. Alguém tem conhecimento nessa parte.

Descrição:
Os usuários do sistema trabalham externos e ao cadastrar um novo cliente eu quero ter a latitude e longitude de onde esse usuário fez o cadastro do cliente. Os usuários usam o sistema pelo celular.

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (6)


AF

Boa tarde Luiz Henrique.
Eu uso o leaflet com o adianti com sucesso.

Dê uma olhada. https://leafletjs.com/

Qualquer dúvida, comunique.

Atenciosamente,
Ailton Furtado,
JS

Ailton tem algum exemplo do uso de Leaflet com o Adianti. Estou com um projeto aqui e pelo que entendi o Leadflet vai me atender para esta necessidade, gostaria de entender a dinamica no Adianti antes
AF

Boa noite Juliano.
Tenho um exemplo que fiz usando o template do adianti e usei para ministrar um minicurso do leaflet e funcionou perfeitamente.
JS

Ailton, poderia disponibilizar pra gente, e sobre o curso onde encontro mais detalhes ??
AF

Caro Juliano, boa noite. Segue abaixo o código que gera um mapa usando o leaflet com a utilização de geojson.

Em relação ao minicurso, foi pelo labgis da UERJ.

https://www.ggp.uerj.br/2019/palestras-e-cursos/minicurso3.php

Me passe o seu email particular para lhe passar a figura do mapa que é gerado pelo código abaixo, pois por aqui consigo anexar imagem.

==========================================================================

  1. <?php
  2. /**
  3.  * NewIssueForm Registration
  4.  * @author  <your name here>
  5.  */
  6.  
  7. class Geo extends TPage
  8. {
  9.     private $form// form
  10.     /**
  11.      * Class constructor
  12.      * Creates the page and the registration form
  13.      */
  14.     function __construct()
  15.     {
  16.         parent::__construct();
  17.         /* iniciar inclusão do leaflet*/
  18.         TPage::include_js("lib/adianti/include/leaflet/leaflet.js");
  19.         TPage::include_css("lib/adianti/include/leaflet/leaflet.css");
  20.         TPage::include_js("app/templates/Rio_de_Janeiro_PlanoCarreira.json");
  21.         TPage::include_js("app/templates/Rio_de_Janeiro_Professores.json");
  22.         $this->form = new BootstrapFormBuilder('form_mapa');
  23.         // creates the action button
  24.         $btn_mapa = new TButton('limpa');
  25.         $btn_mapa->setAction(new TAction(array($this'onGeraMapa')), 'Gera Mapa');
  26.         $btn_mapa->setImage('fa:eraser blue'); 
  27.  
  28.         $this->form->addFields( [$btn_mapa] );            
  29.         // creates the DIV element with the images
  30.         $mapa = new TElement('div');
  31.         $mapa->id    'mapa';
  32.         $mapa->style "width:100%;height:400px";     
  33.         
  34.         // creates the page structure using a vbox
  35.         $container = new TVBox;
  36.         $container->style 'width: 100%';
  37.         $container->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  38.         $container->add($this->form);
  39.         $container->add($mapa);        
  40.         
  41.         // add the vbox inside the page
  42.         parent::add($container);
  43.     }
  44.     
  45.     public function onGeraMapa($param)
  46.     {
  47.         TScript::create("    
  48.         
  49.             /*Faz a classificação de acordo com a variável*/
  50.             function getColor(d) {
  51.                 return d > 1200           ? '#E31A1C' :
  52.                    d <= 1200 && d > 500   ? '#FC4E4A' :
  53.                    d <= 500  && d > 300   ? '#FC4E2A' :
  54.                    d <= 300  && d > 100   ? '#FD8D3C' :
  55.                    d <= 100  && d >= 0    ? '#FEB24C' :
  56.                                             '#FFEDA0' ;
  57.             };    
  58.             /*Estilo do mapa e chamada da função de classificação*/
  59.             function style(feature) {
  60.                 return {
  61.                     fillColor: getColor(feature.properties.FUNDAMENTA),
  62.                     weight: 2,
  63.                     opacity: 1,
  64.                     color: 'white',
  65.                     dashArray: '3',
  66.                     fillOpacity: 0.7
  67.                 };
  68.             }; 
  69.              /*Criação da variável que será utilizada como camada base*/
  70.             var camada_base  = L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png');
  71.             /*Criação da variável mapa e a localização onde o mapa será centralizado e o nível do zoom*/
  72.             var mapa = L.map('mapa',{layers:[camada_base]}).setView([-22.903719, -43.1760605], 7);
  73.                     
  74.             /*Criação da variável da camada fundamental que ficará sobreposta a camada base*/
  75.             var fundamental = new L.geoJSON(geo_fundamental,{onEachFeature:function(feature,layer) {
  76.             layer.bindPopup(feature.properties.GEOCODIGO+'</b><br />'+feature.properties.NOME+'</b><br /> Fundamental: '+feature.properties.FUNDAMENTA);
  77.             },style:style});        
  78.             /*Criação da variável da camada fundamental que ficará sobreposta a camada base*/
  79.             var plano = new L.geoJSON(geo_plano,{onEachFeature:function(feature,layer) {
  80.             layer.bindPopup(feature.properties.GEOCODIGO+'</b><br />'+feature.properties.NOME+'</b><br /> Plano de Carreira: '+feature.properties.PCARREIRA);
  81.             }});        
  82.         
  83.             var baseLayers = {'Mundo': camada_base};
  84.             var overlays = {'Fundamental' : fundamental, 'Carreira' : plano};
  85.         
  86.             L.control.layers(baseLayers,overlays).addTo(mapa);
  87.             fundamental.addTo(mapa);    
  88.             
  89.             /*Carrega a legenda */
  90.             var legenda = L.control({position: 'topright'});
  91.             legenda.onAdd = function (mapa) {
  92.                     var div = L.DomUtil.create('div', 'info legend'),
  93.                         grades = [0, 100, 300, 500, 1200],
  94.                         labels = [];
  95.                         
  96.                     for (var i = 0; i < grades.length; i++) {
  97.                         div.innerHTML +=
  98.                             '<i style=\"width: 16px; height:16px; float:left; 
  99.                             margin-right: 8px;opacity: 0.7; background:' + getColor(grades[i] + 1) + '\"></i> ' 
  100.                             + grades[i] + (grades[i + 1] ? '&ndash;' + grades[i + 1] + '<br>' : '+');
  101.                     }                    
  102.                 return div;
  103.             };        
  104.             legenda.addTo(mapa);        
  105.          ");        
  106.     }    
  107.     
  108. }
  109. ?>


</your>
JS

Bom dia Ailton, e obrigado pela resposta. Meu email é juliano.tdm@gmail.com

Agradeço mais uma vez pela atenção.