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 Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


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


</your>
JS

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

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