1<!DOCTYPE html> 2<html lang="pt-br"> 3 4<head> 5 <meta charset="UTF-8"> 6 <title>Documentação para integração - dudus</title> 7 <meta name="description" content=""> 8 <meta name="author" content="Mapp Sistemas"> 9 <meta name="keywords" content="" /> 10 <link rel="shortcut icon" href="configClientesNovos/sites/dudus/favicon.png"> 11 12 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> 13 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 14 15 <style> 16 17 @media screen and (max-width: 467px) { 18 .styleRuaN20{ 19 max-width: 100px; 20 overflow: hidden; 21 } 22 } 23 24 @media (max-width: 991px) and (min-width: 767px) { 25 .styleRuaN20{ 26 max-width: 125px; 27 overflow: hidden; 28 } 29 } 30 31 @media (min-width: 991px) { 32 .styleRuaN20{ 33 max-width: 200px; 34 overflow: hidden; 35 } 36 } 37</style> 38 39 40<!-- Fontawesome 4.3.0 --> 41<link rel="stylesheet" href="../assets/css/font-awesome.min.css"> 42 43<link rel="stylesheet" src="../oo/src/assets/css/ol.css" type="text/css"/> 44<link rel="stylesheet" src="../oo/src/assets/css/estilo-map-openlayers.css" type="text/css"/> 45 46<!-- Bootstrap CSS --> 47<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/bootstrap.min.css"> 48<!-- Owl Default CSS --> 49<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/owl.default.min.css"> 50<!-- Owl Carousel CSS --> 51<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/owl.carousel.min.css"> 52<!-- Owl Magnific CSS --> 53<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/magnific-popup.css"> 54<!-- Animate CSS --> 55<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/animate.css"> 56<!-- Boxicons CSS --> 57<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/boxicons.min.css"> 58<!-- Flaticon CSS --> 59<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/flaticon.css"> 60<!-- Image Light Box CSS --> 61<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/imagelightbox.min.css"> 62<!-- Meanmenu CSS --> 63<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/meanmenu.css"> 64<!-- Nice Select CSS --> 65<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/nice-select.css"> 66<!-- Odometer CSS--> 67<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/odometer.css"> 68<!-- Icons Style CSS --> 69<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/style-icons.css"> 70<!-- Agendar CSS --> 71<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/agendar.css"> 72<!-- Style CSS --> 73<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/style.css?v=1"> 74<!-- Responsive CSS --> 75<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/responsive.css"> 76<!-- Css Layout index --> 77<link rel="stylesheet" href="../configClientesNovos/n20-layout/assets/css/index.css"> 78 79<!-- style variáveis colors --> 80<style> 81 :root { 82 /* cor principal */ 83 --main-color: #2e3456; 84 /* cor secundaria */ 85 --sec-color: #00c6ed; 86 } 87</style> 88
89<script src="../assets/js/jquery-1.12.4.min.js"></script>
89 90<link rel="stylesheet" href="../assets/css/jquery-ui.css">
91<script src="../assets/js/jquery-ui.js"></script>
91 92
93<script src="../assets/js/jquery-migrate-1.4.1.js"></script>
93 94<style> 95 .ui-autocomplete { 96 max-height: 300px; 97 overflow-y: auto; 98 overflow-x: hidden; 99 } 100 * html .ui-autocomplete { 101 height: 300px; 102 } 103</style> 104 105<!-- Javascript do Openlayers -->
106<script src="https://cdnjs.cloudflare.com/polyfill/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>
vendor: 1 bytes, line 106
106
107<script src="../oo/src/assets/js/ol.js" type="text/javascript"></script>
107 108 109<style> 110 111 :root{ 112 --st-color-fonte-topo: #000000; 113 --st-color-fundo-topo: #fff; 114 --st-color-borda-topo: #ffdd21; 115 --st-color-fonte-barra-endereco: #fff; 116 --st-color-principal: #201e1e; 117 --st-color-rodape:#fff; 118 --st-color-fonte-segundaria: #fff; 119 --st-color-font-secundaria-n20: #000000; 120 --st-color-font-sec-nav: #000000; 121 122 --main-color: #201e1e; 123 --sec-color: #FFF; 124 } 125 126 127</style> 128 129<style> 130 131 :root{ 132 /* 133 baixar 134 */ 135 --color-svg-baixar-b_fil7: none; 136 --color-svg-baixar-b_fil5: none; 137 --color-svg-baixar-b_fil3: #FEFEFE; 138 --color-svg-baixar-b_fil18: #4B4B4D; 139 --color-svg-baixar-b_fil1: #373435; 140 --color-svg-baixar-b_fil24: #EB3337; 141 --color-svg-baixar-b_fil4: #D4D6D5; 142 --color-svg-baixar-b_fil0: #CDE8DA; 143 --color-svg-baixar-b_fil6: #A2D188; 144 --color-svg-baixar-b_fil8: #474646; 145 --color-svg-baixar-b_fil11: #0E3A82; 146 --color-svg-baixar-b_fil10: #0F2D5C; 147 --color-svg-baixar-b_fil12: #255096; 148 --color-svg-baixar-b_fil15: #91D5FF; 149 --color-svg-baixar-b_fil16: #B3E2FF; 150 --color-svg-baixar-b_fil9: #CCDFF9; 151 --color-svg-baixar-b_fil13: #DCEAFB; 152 --color-svg-baixar-b_fil17: #E38540; 153 --color-svg-baixar-b_fil14: #F09959; 154 --color-svg-baixar-b_fil19: #FB8627; 155 --color-svg-baixar-b_fil23: #cc6600; 156 --color-svg-baixar-b_fil20: #cc6600; 157 --color-svg-baixar-b_fil22: #a75300; 158 --color-svg-baixar-b_fil21: #cc6600; 159 --color-svg-baixar-b_fil2: #cc6600; 160 /* 161 sobre 162 */ 163 --color-svg-sobre-s_fil30: #B4BCC9; 164 --color-svg-sobre-s_fil41: #211F20; 165 --color-svg-sobre-s_fil35: #302A3B; 166 --color-svg-sobre-s_fil7: #33002B; 167 --color-svg-sobre-s_fil33: #3B3348; 168 --color-svg-sobre-s_fil45: #545C75; 169 --color-svg-sobre-s_fil46: #606780; 170 --color-svg-sobre-s_fil34: #6B6975; 171 --color-svg-sobre-s_fil9: #6C2D43; 172 --color-svg-sobre-s_fil44: #7C7982; 173 --color-svg-sobre-s_fil29: #81808E; 174 --color-svg-sobre-s_fil2: #837E8B; 175 --color-svg-sobre-s_fil37: #84404E; 176 --color-svg-sobre-s_fil22: #8585C1; 177 --color-svg-sobre-s_fil24: #955045; 178 --color-svg-sobre-s_fil43: #99B4DD; 179 --color-svg-sobre-s_fil3: #9D9DD9; 180 --color-svg-sobre-s_fil25: #A15D50; 181 --color-svg-sobre-s_fil27: #A25E51; 182 --color-svg-sobre-s_fil23: #B16E5F; 183 --color-svg-sobre-s_fil1: #B7D0F9; 184 --color-svg-sobre-s_fil26: #C2988F; 185 --color-svg-sobre-s_fil19: #D37B75; 186 --color-svg-sobre-s_fil31: #D3D6DD; 187 --color-svg-sobre-s_fil18: #D77F7A; 188 --color-svg-sobre-s_fil28: #DFE0FC; 189 --color-svg-sobre-s_fil42: #E2806D; 190 --color-svg-sobre-s_fil47: #E48771; 191 --color-svg-sobre-s_fil11: #E48C77; 192 --color-svg-sobre-s_fil4: #E5918A; 193 --color-svg-sobre-s_fil40: #E59280; 194 --color-svg-sobre-s_fil38: #E69888; 195 --color-svg-sobre-s_fil36: #E8A396; 196 --color-svg-sobre-s_fil16: #E9A492; 197 --color-svg-sobre-s_fil5: #E9A7B2; 198 --color-svg-sobre-s_fil17: #EAAC9A; 199 --color-svg-sobre-s_fil32: #ECF1F7; 200 --color-svg-sobre-s_fil14: #EDB6A5; 201 --color-svg-sobre-s_fil39: #EDB7A9; 202 --color-svg-sobre-s_fil10: #EDB8A7; 203 --color-svg-sobre-s_fil13: #EEBDAD; 204 --color-svg-sobre-s_fil15: #F1C5BB; 205 --color-svg-sobre-s_fil8: #F1CDBE; 206 --color-svg-sobre-s_fil21: #F3F3F3; 207 --color-svg-sobre-s_fil12: #F9E3DE; 208 --color-svg-sobre-s_fil6: #F9F0E9; 209 --color-svg-sobre-s_fil20: #FDFAF7; 210 --color-svg-sobre-s_fil0: white; 211 /* 212 documentacao 213 */ 214 --color-svg-doc-str0: #6EA2D6; 215 --color-svg-doc-str3: #3073AD; 216 --color-svg-doc-str2: #435998; 217 --color-svg-doc-str1: #6EA2D6; 218 --color-svg-doc-d_fil14: none; 219 --color-svg-doc-d_fil12: #FEFEFE; 220 --color-svg-doc-d_fil47: #E6E7E8;
221 --color-svg-doc-d_fil34: #FFD580; 222 --color-svg-doc-d_fil5: #F8A887; 223 --color-svg-doc-d_fil9: #F7A280; 224 --color-svg-doc-d_fil10: #E18A74; 225 --color-svg-doc-d_fil11: #E98F75; 226 --color-svg-doc-d_fil20: #5E2E44; 227 --color-svg-doc-d_fil45: #F6B992; 228 --color-svg-doc-d_fil46: #DDA083; 229 --color-svg-doc-d_fil43: #F4B892; 230 --color-svg-doc-d_fil3: #E7977B; 231 --color-svg-doc-d_fil26: #CD5783; 232 --color-svg-doc-d_fil27: #813B55; 233 --color-svg-doc-d_fil48: #C7EAFB; 234 --color-svg-doc-d_fil39: #A34E75; 235 --color-svg-doc-d_fil17: #8A3B5A; 236 --color-svg-doc-d_fil25: #A5DEF5; 237 --color-svg-doc-d_fil0: #A0ADD4; 238 --color-svg-doc-d_fil19: #4B3128; 239 --color-svg-doc-d_fil8: #48372F; 240 --color-svg-doc-d_fil18: #392E28; 241 --color-svg-doc-d_fil44: #432D2B; 242 --color-svg-doc-d_fil40: #582F40; 243 --color-svg-doc-d_fil13: #47C2C8; 244 --color-svg-doc-d_fil29: #47B1E4; 245 --color-svg-doc-d_fil38: #6779BA; 246 --color-svg-doc-d_fil35 : #464F77; 247 --color-svg-doc-d_fil21: #6C5AA5; 248 --color-svg-doc-d_fil6: #2F3543; 249 --color-svg-doc-d_fil4: #2B303C; 250 --color-svg-doc-d_fil1: #313133; 251 --color-svg-doc-d_fil32: #29292B; 252 --color-svg-doc-d_fil2: #232223; 253 --color-svg-doc-d_fil28: #4E83C2; 254 --color-svg-doc-d_fil37: #5F67AD; 255 --color-svg-doc-d_fil7: #01BBC7; 256 --color-svg-doc-d_fil36: #4D528C; 257 --color-svg-doc-d_fil31: #1A83A5; 258 --color-svg-doc-d_fil24: #435998; 259 --color-svg-doc-d_fil23: #384575; 260 --color-svg-doc-d_fil33: #3F5A8E; 261 --color-svg-doc-d_fil30: #294871; 262 --color-svg-doc-d_fil22: #2E3C6E; 263 --color-svg-doc-d_fil16: #2A599B; 264 --color-svg-doc-d_fil15: #2D4F78; 265 --color-svg-doc-d_fil42: #1C60AB; 266 --color-svg-doc-d_fil41: #21518F; 267 /* 268 porque 269 */ 270 --color-svg-porque-pq_fil17: #FEFEFE; 271 --color-svg-porque-pq_fil39: #FDBE47; 272 --color-svg-porque-pq_fil46: #FDBA2F; 273 --color-svg-porque-pq_fil57: #F9AB88; 274 --color-svg-porque-pq_fil12: #F7A07A; 275 --color-svg-porque-pq_fil9: #F5895F; 276 --color-svg-porque-pq_fil18: #F05F6F; 277 --color-svg-porque-pq_fil33: #EE4E9B; 278 --color-svg-porque-pq_fil48: #EF4F78; 279 --color-svg-porque-pq_fil31: #EE3C70; 280 --color-svg-porque-pq_fil21: #F1F9FD; 281 --color-svg-porque-pq_fil45: #F1F1F0; 282 --color-svg-porque-pq_fil8: #E2714D; 283 --color-svg-porque-pq_fil2: #E4ECF7; 284 --color-svg-porque-pq_fil0: #E1EAF6; 285 --color-svg-porque-pq_fil7: #E1E7F1; 286 --color-svg-porque-pq_fil38: #E2A23A; 287 --color-svg-porque-pq_fil20: #D3D8E0; 288 --color-svg-porque-pq_fil56: #D0805E; 289 --color-svg-porque-pq_fil13: #D1DCE6; 290 --color-svg-porque-pq_fil36: #CB3270; 291 --color-svg-porque-pq_fil3: #C8D8EF; 292 --color-svg-porque-pq_fil1: #B1CBEA; 293 --color-svg-porque-pq_fil47: #A0C5E8; 294 --color-svg-porque-pq_fil19: #A594C6; 295 --color-svg-porque-pq_fil34: #88CAEF; 296 --color-svg-porque-pq_fil4: #88ADDB; 297 --color-svg-porque-pq_fil43: #66CBE8; 298 --color-svg-porque-pq_fil30: #70ACDD; 299 --color-svg-porque-pq_fil52: #7BC24D; 300 --color-svg-porque-pq_fil35: #63A6DA; 301 --color-svg-porque-pq_fil27: #7676B6; 302 --color-svg-porque-pq_fil24: #3AC6F4; 303 --color-svg-porque-pq_fil6: #53AEE1; 304 --color-svg-porque-pq_fil5: #59A7DC; 305 --color-svg-porque-pq_fil44: #38C2D9; 306 --color-svg-porque-pq_fil14: #509FD6; 307 --color-svg-porque-pq_fil16: #96A5C1; 308 --color-svg-porque-pq_fil32: #EE4E90; 309 --color-svg-porque-pq_fil53: #4FB852; 310 --color-svg-porque-pq_fil28: #5484C2; 311 --color-svg-porque-pq_fil50: #3697CE; 312 --color-svg-porque-pq_fil37: #487BBD; 313 --color-svg-porque-pq_fil15: #463A51; 314 --color-svg-porque-pq_fil25: #5E4F9E; 315 --color-svg-porque-pq_fil58: #563D6A; 316 --color-svg-porque-pq_fil51: #28AC54; 317 --color-svg-porque-pq_fil29: #525FA9; 318 --color-svg-porque-pq_fil26: #4F3E8E; 319 --color-svg-porque-pq_fil42: #404898; 320 --color-svg-porque-pq_fil10: #2D53A2; 321 --color-svg-porque-pq_fil11: #354A83; 322 --color-svg-porque-pq_fil55: #37498E; 323 --color-svg-porque-pq_fil54: #39457E; 324 --color-svg-porque-pq_fil49: #3C3E77; 325 } 326 327</style> 328 329<!--[if lt IE 9]> 330
330<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
330 331
331<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
331 332<![endif]-->
333<script> 334 var dominioCorrente = 'dudus'; 335 336 async function calcularDistanciaPeloGoogle(tipoVeiculo, inicio, fim, p1, p2, retorno) { 337 338 console.log('====> DATA HORA:: ' + new Date()); 339 340 let validarDataHora = ''; 341 let departureTime = ''; 342 343 let start = inicio; 344 let end = fim; 345 let arrayLaLo = []; 346 let rotaMaisCurta = 'N'; 347 348 if ((tipoVeiculo == 'A') || (tipoVeiculo == 'M') || (tipoVeiculo == 'D') || (tipoVeiculo == 'B') || (tipoVeiculo == 'AC') || (tipoVeiculo == 'MC') || (tipoVeiculo == 'DC') || (tipoVeiculo == 'BC') || (tipoVeiculo == 'X')) { 349 rotaMaisCurta = 'S'; 350 } 351 352 if (tipoVeiculo == '') { 353 tipoVeiculo = 'M'; 354 } 355 356 if (dominioCorrente == 'edumotoboy') { 357 tipoVeiculo = 'B'; 358 } 359 360 if (dominioCorrente == 'virtuan') { 361 tipoVeiculo = 'B'; 362 } 363 364 if (dominioCorrente == 'logmoto') { 365 if (tipoVeiculo == 'MC') { 366 rotaMaisCurta = 'N'; 367 } 368 } 369 370 arrayLaLo.push(new google.maps.LatLng(inicio)); 371 arrayLaLo.push(new google.maps.LatLng(fim)); 372 373 console.log('.... p1 = ' + p1 + ' start ' + start + ' end = ' + end); 374 375 let directionsService = new google.maps.DirectionsService(); 376 let tipoVeiculoUsuario = tipoVeiculo; 377 378 let request = { 379 origin: start, 380 destination: end, 381 travelMode: 'DRIVING', 382 provideRouteAlternatives: true, 383 unitSystem: google.maps.UnitSystem.METRIC 384 }; 385 386 if (validarDataHora) { 387 let request = { 388 origin: start, 389 destination: end, 390 travelMode: 'DRIVING', 391 provideRouteAlternatives: true, 392 unitSystem: google.maps.UnitSystem.METRIC, 393 drivingOptions: { 394 departureTime: departureTime, 395 trafficModel: 'bestguess' 396 } 397 }; 398 } 399 400 if (tipoVeiculoUsuario == 'B') { // bicicleta 401 402 request = { 403 origin: start, 404 destination: end, 405 travelMode: 'BICYCLING', 406 provideRouteAlternatives: true 407 }; 408 409 if (validarDataHora) { 410 let request = { 411 origin: start, 412 destination: end, 413 travelMode: 'BICYCLING', 414 provideRouteAlternatives: true, 415 unitSystem: google.maps.UnitSystem.METRIC, 416 drivingOptions: { 417 departureTime: departureTime, 418 trafficModel: 'bestguess' 419 } 420 }; 421 } 422 } 423 424 directionsService.route(request, function(result, status) { 425 426 console.log('status:: ' + status); 427 428 var indexTT = p2; 429 430 var optionsDisplay = { 431 map: mapa, 432 suppressMarkers: true, 433 preserveViewport: true 434 } 435 436 if (arrayDirectionsDisplay) { 437 438 if (typeof arrayDirectionsDisplay[indexTT] != 'undefined') { 439 arrayDirectionsDisplay[indexTT].setMap(null); 440 } 441 } 442 443 var ponto1 = p1; 444 var ponto2 = p2; 445 var menorDistancia = 0; 446 var menorDuracao = 0; 447 var melhorRota = 0; 448 var duracaoRotaMaisRapida = 0; 449 var distanciaRotaMaisRapida = 0; 450 var melhorRotaTempo = 0; 451 var ponto2Int = parseInt(ponto2); 452 453 switch (status) { 454 case google.maps.DirectionsStatus.OVER_QUERY_LIMIT: 455 console.log('OVER_QUERY_LIMIT '); 456 /** 457 * o Google está limitando a 10 consultas por segundo 458 * por isso implementamos aqui se cair no limite 459 * após 1 segundo chamamos a função 460 * loopCalcularTodasDistanciaVazio() 461 * para buscar novamente a distância 462 */ 463 464 setTimeout(function() { 465 loopCalcularTodasDistanciaVazio(); 466 }, 1000); 467 468 break; 469 } 470 471 if (status == google.maps.DirectionsStatus.OK) { // Se deu tudo certo 472 473 var myroute = ''; 474 var melhorRota = 0; 475 476 var total = 0; 477 var duracao = 0; 478 var rotaAnterior = 0; 479 var rotaAtual = 0; 480 var indexD = 0; 481 var indexT = 0; 482 var index = 0; 483 484 for (j = 0; j < result.routes.length; j++) { 485 486 myroute = result.routes[j]; 487 488 for (var i = 0; i < myroute.legs.length; i++) { 489 490 total = myroute.legs[i].distance.value; 491 duracao = myroute.legs[i].duration.value; 492 493 console.log('duracao ' + duracao + ' distancia total =' + total); 494 } 495 if (rotaAnterior === 0) { 496 rotaAnterior = total; 497 menorDistancia = total; 498 499 indexD = j; 500 console.log('menorDuracao ' + menorDuracao + '== duracao =' + duracao + " indexD " + indexD); 501 502 } else if (rotaAnterior < total) { 503 total = rotaAnterior; 504 } else { 505 menorDistancia = total; 506 rotaAnterior = total; 507 508 indexD = j; 509 console.log('menorDuracao ' + menorDuracao + '== duracao =' + duracao + " indexD " + indexD); 510 } 511 /** 512 * pegar a menor duração 513 */ 514 if (menorDuracao === 0) { 515 menorDuracao = duracao; 516 } else { 517 if (menorDuracao > duracao) { 518 menorDuracao = duracao; 519 520 } 521 } 522 523 if (duracaoRotaMaisRapida == 0) { 524 duracaoRotaMaisRapida = duracao; 525 distanciaRotaMaisRapida = total; 526 527 indexT = j; 528 } else { 529 if (duracao < duracaoRotaMaisRapida) { 530 duracaoRotaMaisRapida = duracao; 531 distanciaRotaMaisRapida = total; 532 indexT = j; 533 } 534 } 535 536 } 537 538 index = indexD; 539 if (rotaMaisCurta === 'N') { 540 /** 541 * aqui pega a rota mais rápida e não a mais curta 542 */ 543 menorDistancia = distanciaRotaMaisRapida; 544 menorDuracao = duracaoRotaMaisRapida; 545 index = indexT; 546 } 547 548 calculandoDistanciaPonto[ponto2Int] = 'T'; // terminou de calcular 549 550 console.log(' calculandoDistanciaPonto p2= ' + calculandoDistanciaPonto[ponto2Int] + ' ponot ' + ponto2Int + ' retorno ' + retorno); 551 552 console.log('menorDistancia:: ' + menorDistancia); 553 554 console.log('distancia p2:: ' + p2) 555 console.log('retorno p2:: ' + retorno) 556 console.log('menorDistancia p2:: ' + menorDistancia) 557 console.log('menorDuracao p2:: ' + menorDuracao) 558 559 if (retorno == '') { 560 561 $('#distancia' + p2).val(menorDistancia); 562 $('#duracao' + p2).val(menorDuracao); 563 564 if (document.getElementById('erroColeta' + p2)) { 565 $('#erroColeta' + p2).text(''); 566 } 567 } else { 568 569 $('#distanciaR').val(menorDistancia); 570 $('#duracaoR').val(menorDuracao); 571 } 572 /** 573 * loop mostra para cliente quais ainda falta para calcular 574 */ 575 loopVerificarTodasDistanciaVazio(); 576 577 if (document.getElementById("rotaPoline" + p2)) { 578 579 let aux = []; 580 let arryLaLo = result.routes[index].overview_path; 581
582 arryLaLo.forEach(function(e) { 583 aux.push([e.lat(), e.lng()]); 584 }); 585 586 document.querySelector("#rotaPoline" + p2).value = JSON.stringify(aux); 587 } 588 589 var decodedPoints = result.routes[index].overview_path; 590 var arrayPoligno = []; 591 592 decodedPoints.map(function(a) { 593 arrayPoligno.push({ 594 lat: a.lat(), 595 lng: a.lng() 596 }); 597 }); 598 599 //campos usando no para armazenar DirectionsRenderer para cada rota no endereço 600 // e tambem para armazena as polyline das rotas. 601 602 if (document.getElementById('rotaPoline')) { 603 document.getElementById('rotaPoline').value = ''; 604 } 605 606 607 } else { 608 console.log(' status else ok'); 609 calculandoDistanciaPonto[ponto2Int] = 'T'; // terminou de calcular 610 } 611 612 }); 613 } 614 615 function loopVerificarTodasDistanciaVazio() { 616 617 var pontoInicio = 2; 618 var numeroEnderecosExiste = $("#identificadorEndereco").val(); 619 var neeInt = parseInt(numeroEnderecosExiste); 620 neeInt--; 621 a = pontoInicio; 622 623 var precisaRecalcular = 'N'; 624 var pontoInicio = 0; 625 var msg = ''; 626 while (a <= neeInt) { 627 /** 628 * verifica se distancia esta vazio 629 */ 630 var distancia = document.getElementById('distancia' + a).value; 631 if ((distancia === '') || (distancia === undefined)) { 632 633 precisaRecalcular = 'S'; 634 if (pontoInicio === 0) { 635 pontoInicio = a - 1; 636 } 637 msg += ' Ponto ' + a + '<br />'; 638 } 639 a++; 640 } 641 if (document.getElementById('divInfodist')) { 642 if (msg !== '') { 643 msg = 'Calculando distâncias, aguarde... <br /> ' + msg + ' '; 644 } 645 document.getElementById('divInfodist').innerHTML = msg; 646 } 647 $('#divGif').html(''); 648 } 649 650 function calcularDistanciagraphhopper(pontos1, pontos2, menorDistancia, menorDuracao) { 651 652 if (pontos1 != '' || pontos1 != undefined) { 653 654 console.log(' pontos ' + pontos1); 655 var pontosInicio = pontos1.split(','); 656 var laInicio = pontosInicio[0]; 657 var loInicio = pontosInicio[1]; 658 laInicio = Number(laInicio); 659 loInicio = Number(loInicio); 660 661 console.log(' laInicio = ' + laInicio + ' loInicio ' + loInicio); 662 663 var pontosFim = pontos2.split(','); 664 var laFim = pontosFim[0]; 665 var loFim = pontosFim[1]; 666 laFim = Number(laFim); 667 loFim = Number(loFim); 668 669 console.log(' laFim = ' + laFim + ' loFim ' + loFim); 670 671 var point = []; 672 point[0] = ['ponto 1']; 673 point[0].lat = laInicio; 674 point[0].long = loInicio; 675 676 point[1] = ['ponto 2']; 677 point[1].lat = laFim; 678 point[1].long = loFim; 679 680 let pointComplete = ''; 681 for (var prop in point) { 682 pointComplete += 'point=' + point[prop].lat + ',' + point[prop].long + '&'; 683 } 684 685 let url = new URL('https://graphhopper.com/api/1/route?' + pointComplete); 686 687 url.searchParams.set('vehicle', 'car'); //tipo de veiculo 688 url.searchParams.set('locale', 'pt_BR'); 689 url.searchParams.set('calc_points', 'true'); //retorna rota 690 url.searchParams.set('key', '3754f47e-6c49-41f5-aba8-92303ca87061'); 691 692 var resposta = []; 693 var distancia = ''; 694 var tempo = ''; 695 let request = new XMLHttpRequest(); 696 697 request.open('GET', url); 698 request.responseType = 'json' 699 request.send(); 700 request.onload = function() { 701 702 switch (request.status) { 703 case 200: 704 resposta['status'] = 200; 705 resposta['resposta'] = request.response; 706 distancia = request.response.paths[0].distance; 707 tempo = request.response.paths[0].time; 708 //console.log(request.response.paths[0].distance); 709 console.log(request.response); 710 console.log('graphhopper distancia ' + distancia + ' tempo ' + tempo); 711 console.log('Google menorDistancia = ' + menorDistancia + ' menorDuracao ' + menorDuracao); 712 713 var kmGrap = distancia / 1000; 714 var kmGoogle = menorDistancia / 1000; 715 var diferenca = kmGoogle - kmGrap; 716 717 console.log('Google km = ' + kmGoogle + ' kmGrap ' + kmGrap + ' diferença = ' + diferenca); 718 719 $.post("enderecosServico/enderecoAdicional/ajaxInsereDadosGraphhopperBanco.php", { 720 kmGrap: kmGrap, 721 kmGoogle: kmGoogle, 722 diferenca: diferenca, 723 tempo: tempo, 724 menorDuracao: menorDuracao, 725 pontos1: pontos1, 726 pontos2: pontos2 727 }, 728 function(retorno) { 729 $('#divJsonTeste').html(retorno); 730 731 }, 'html'); 732 733 break; 734 case 400: 735 resposta['status'] = 400; 736 resposta['resposta'] = 'Sua solicitação não é válida. Por exemplo, você especificou poucos ou muitos pontos.'; 737 break; 738 case 401: 739 resposta['status'] = 401; 740 resposta['resposta'] = 'Autenticação necessária'; 741 break; 742 case 429: 743 resposta['status'] = 429; 744 resposta['resposta'] = 'Limite de API alcançado.'; 745 break; 746 case 500: 747 resposta['status'] = 500; 748 resposta['resposta'] = 'Erro do Servidor Interno. Notificação automática.'; 749 break; 750 case 501: 751 resposta['status'] = 501; 752 resposta['resposta'] = 'Apenas uma lista especial de veÃculos é suportada.'; 753 break; 754 } 755 756 }; 757 758 } 759 } 760</script>
vendor: 1 bytes, line 760
760
761<script type="text/javascript"> 762 var displayObject = false; 763 var tipoCalculoPonto = '' 764 765 function validateLatLng(latitude, longitude) { 766 // let pattern = new RegExp('^-?([1-8]?[1-9]|[1-9]0)\\.{1}\\d{1,6}'); 767 // return pattern.test(latitude) && pattern.test(longitude); 768 769 const latitudeRegex = /^[-+]?([1-8]?\d(\.\d+)?|90(\.0+)?)$/; 770 const longitudeRegex = /^[-+]?([1-9]?\d(\.\d+)?|1[0-7]\d(\.\d+)?|180(\.0+)?)$/; 771 772 if (latitudeRegex.test(latitude) && longitudeRegex.test(longitude)) { 773 return true; 774 } else { 775 return false; 776 } 777 778 } 779 780 // FUNÃÃO PARA TENTAR EFETUAR O CÃLCULO DE FRETE NOVAMENTE 781 async function retryCalculate(p1, p2, retorno) { 782 const START = `${$(`#latitudeE${p1}`).val()},${$(`#longitudeE${p1}`).val()}` 783 const END = `${$(`#latitudeE${p2}`).val()},${$(`#longitudeE${p2}`).val()}` 784 785 const START_ADDRESS = $(`#txtEnderecoE${p1}`).val(); 786 const END_ADDRESS = $(`#txtEnderecoE${p2}`).val(); 787 788 const VEHICLE_TYPE = $(`#tipoVeiculo`).val() ? $(`#tipoVeiculo`).val() : ""; 789 790 var isCalculating = false; 791 if (calculandoDistanciaPonto.indexOf(p2)) { 792 if (calculandoDistanciaPonto[p2] !== "S") { 793 calculandoDistanciaPonto[p2] = "S"; 794 isCalculating = true; 795 } 796 } 797 798 if (isCalculating) { 799 $(`#divGif`).html(`<img src="imagens/carregando.gif" /><br />Aguarde...`); 800 801 /* 802 const asyncAjax = async (start, end, vehicleType, startAddress, endAddress) => { 803 return new Promise((response, rejection) => { 804 $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaJavascript.php", { 805 inicio: start, 806 fim: end, 807 p1: p1, 808 p2: p2, 809 retorno: retorno, 810 tipoVeiculo: vehicleType, 811 endPonto1: startAddress, 812 endPonto2: endAddress 813 }, html => { 814 $("#divGif").html(html); 815 response(true); 816 }, "html"); 817 }); 818 }*/ 819 820 const asyncAjax = async (start, end, vehicleType, startAddress, endAddress) => { 821 return new Promise((resolve, reject) => { 822 $.ajax({ 823 url: "enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaJavascript.php", 824 type: "POST", 825 data: { 826 inicio: start, 827 fim: end, 828 p1: p1, 829 p2: p2, 830 retorno: retorno, 831 tipoVeiculo: vehicleType, 832 endPonto1: startAddress, 833 endPonto2: endAddress 834 }, 835 dataType: "html", 836 timeout: 15000, 837 success: function(html) { 838 $("#divGif").html(html); 839 resolve(true); 840 }, 841 error: function(jqXHR, textStatus, errorThrown) { 842 console.error(" Erro Ajax:", errorThrown); 843 844 if (textStatus === "timeout") { 845 console.warn("Timeout de 10 segundos atingido."); 846 } 847 $("#divGif").html("Desculpe houver um erro tente novamente."); 848 reject(false); 849 } 850 }); 851 }); 852 }; 853 854 await asyncAjax(); 855 } 856 } 857 858 function calcularDistanciaRota(p1, p2, retorno) { 859 // alert('calcularDistanciaRota'); 860 return new Promise((resolve, reject) => { // reject declarado mas não usado â resolve sempre para não travar o Worker Pool 861 862 const params = new URLSearchParams(window.location.search); 863 864 865 if (($("#latitudeE" + p1).val() !== '') & ($("#latitudeE" + p2).val() !== '')) { 866 // alert('tipoCalculoPonto: ' + tipoCalculoPonto); 867 if (tipoCalculoPonto == 'P1') { 868 var inicio = $("#latitudeE1").val() + "," + $("#longitudeE1").val(); 869 870 let p1Num = parseInt(p1); 871 let p2Num = parseInt(p2); 872 873 if (p1Num > p2Num) { 874 var inicio = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val(); 875 } 876 } else { 877 var inicio = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val(); 878 } 879 var fim = $("#latitudeE" + p2).val() + "," + $("#longitudeE" + p2).val(); 880 var endPonto1 = $("#txtEnderecoE" + p1).val(); 881 var endPonto2 = $("#txtEnderecoE" + p2).val(); 882 // DEFINE SE DEVERà TENTAR FAZER O CÃLCULO NOVAMENTE 883 const TENTAR_CALCULAR_NOVAMENTE = true; 884 const RETORNO_PRIMEIRO_PONTO = retorno; 885 // console.log('vai chamar ajax p1 ' + p1 + ' p2 ' + p2); 886 /** 887 * calcular rota pelo ajax 888 */ 889 var tipoVeiculo = ''; 890 if (document.getElementById('tipoVeiculo')) { 891 tipoVeiculo = document.getElementById('tipoVeiculo').value; 892 } 893 894 // document.getElementById('divJsonTeste').innerHTML += '<br> inicio= ' + inicio + ' fim = ' + fim; 895 896 var calculando = 'S'; 897 if (calculandoDistanciaPonto.indexOf(p2)) { 898 console.log('index calculandoDistanciaPonto p2 ' + calculandoDistanciaPonto[p2] + ' p2= ' + p2); 899 if (calculandoDistanciaPonto[p2] !== 'S') { 900 901 calculandoDistanciaPonto[p2] = 'S'; 902 console.log('vai calcular ' + p1 + ' p2 ' + p2); 903 904 calculando = 'S'; 905 } 906 } 907 908 console.log('inicio: ' + inicio + ' | fim: ' + fim + ' | validador: ' + validateLatLng(inicio, fim)); 909 // console.log('latitudeEP1: ' + $("#latitudeE" + p1).val() + ' | latitudeEP1: ' + $("#latitudeE" + p1).val() + ' | validador: ' + validateLatLng($("#latitudeE" + p1).val(), $("#longitudeE" + p1).val())); 910 // console.log('latitudeEP2: ' + $("#latitudeE" + p2).val() + ' | latitudeEP2: ' + $("#latitudeE" + p2).val() + ' | validador: ' + validateLatLng($("#latitudeE" + p2).val(), $("#longitudeE" + p2).val())); 911 912 if (validateLatLng($("#latitudeE" + p1).val(), $("#longitudeE" + p1).val()) != true) { 913 calculando = 'N'; 914 } 915 916 if (validateLatLng($("#latitudeE" + p2).val(), $("#longitudeE" + p2).val()) != true) { 917 calculando = 'N'; 918 } 919 920 console.log('calculando: ' + calculando); 921 if (calculando == 'S') { 922 923 document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Aguarde...'; 924 console.log('inicio ' + inicio + ' fim ' + fim + ' p1' + p1 + ' p2 ' + p2 + ' retorno' + retorno + ' tipoVeiculo' + tipoVeiculo); 925 /* 926 // $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRota.php", { 927 $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaJavascript.php", { 928 inicio: inicio, 929 fim: fim, 930 p1: p1, 931 p2: p2, 932 retorno: retorno, 933 tipoVeiculo: tipoVeiculo, 934 endPonto1: endPonto1, 935 endPonto2: endPonto2 936 }, function(retorno) { 937 $('#divGif').html(retorno); 938 //console.log('SUCESSO ajaxCalculaDistanciaRotaJavascript.PHP'); 939 if (TENTAR_CALCULAR_NOVAMENTE && RETORNO_PRIMEIRO_PONTO) { 940 setTimeout(() => { 941 const DISTANCIA_RETORNO = parseInt($(`#distanciaR`).val()); 942 943 if (!DISTANCIA_RETORNO) { 944 retryCalculate(p1, p2, RETORNO_PRIMEIRO_PONTO); 945 } 946 }, 150); 947 } 948 949 $('#btnCalcFreteCEN').attr('disabled', false); 950 }, 'html'); 951 */ 952 $('#btnCalcFreteCEN').attr('disabled', true); 953 // Executar o ajax após o sleep 954 955 let setTimeOutPassar = 'N'; 956 if (params.get("calculoDistancia") == 'S' || params.get("editarReabrir") == 'S') { 957 setTimeOutPassar = 'S'; 958 } 959 960 if (setTimeOutPassar == 'S') { 961 962 setTimeout(function() { 963 // Atualizar para mostrar que está calculando 964 document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Calculando rota...'; 965 966 $.ajax({ 967 url: "enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaJavascript.php", 968 method: "POST", 969 data: { 970 inicio: inicio, 971 fim: fim, 972 p1: p1, 973 p2: p2, 974 retorno: retorno, 975 tipoVeiculo: tipoVeiculo, 976 endPonto1: endPonto1, 977 endPonto2: endPonto2 978 }, 979 dataType: "html", 980 timeout: 15000, 981 success: function(retornoHtml) { 982 $('#divGif').html(retornoHtml); 983 984 if (TENTAR_CALCULAR_NOVAMENTE && RETORNO_PRIMEIRO_PONTO) { 985 setTimeout(() => { 986 const DISTANCIA_RETORNO = parseInt($(`#distanciaR`).val()); 987 988 if (!DISTANCIA_RETORNO) { 989 retryCalculate(p1, p2, RETORNO_PRIMEIRO_PONTO); 990 } 991 }, 150); 992 } 993 994 $('#btnCalcFreteCEN').attr('disabled', false); 995 resolve({ status: 'sucesso', data: retornoHtml }); 996 }, 997 error: function(jqXHR, textStatus, errorThrown) { 998 console.error("Erro na requisição:", errorThrown); 999 1000 if (textStatus === "timeout") { 1001 console.warn("Tempo limite de 15 segundos excedido."); 1002 } 1003 1004 $('#btnCalcFreteCEN').attr('disabled', false); 1005 $('#divGif').html('<div class="alert alert-warning">Erro ao calcular rota. Tente novamente.</div>'); 1006 resolve({ status: 'erro', msg: errorThrown }); // resolve mesmo em erro â não trava o Worker Pool 1007 } 1008 }); 1009 }, 1000); 1010 } else { 1011 // Atualizar para mostrar que está calculando 1012 document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Calculando rota...'; 1013 1014 $.ajax({ 1015 url: "enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaJavascript.php", 1016 method: "POST", 1017 data: { 1018 inicio: inicio, 1019 fim: fim, 1020 p1: p1, 1021 p2: p2, 1022 retorno: retorno, 1023 tipoVeiculo: tipoVeiculo, 1024 endPonto1: endPonto1, 1025 endPonto2: endPonto2 1026 }, 1027 dataType: "html", 1028 timeout: 15000, 1029 success: function(retornoHtml) { 1030 $('#divGif').html(retornoHtml); 1031 1032 if (TENTAR_CALCULAR_NOVAMENTE && RETORNO_PRIMEIRO_PONTO) { 1033 setTimeout(() => { 1034 const DISTANCIA_RETORNO = parseInt($(`#distanciaR`).val()); 1035 1036 if (!DISTANCIA_RETORNO) { 1037 retryCalculate(p1, p2, RETORNO_PRIMEIRO_PONTO); 1038 } 1039 }, 150); 1040 } 1041 1042 $('#btnCalcFreteCEN').attr('disabled', false); 1043 resolve({ status: 'sucesso', data: retornoHtml }); 1044 }, 1045 error: function(jqXHR, textStatus, errorThrown) { 1046 console.error("Erro na requisição:", errorThrown); 1047 1048 if (textStatus === "timeout") { 1049 console.warn("Tempo limite de 15 segundos excedido."); 1050 } 1051 1052 $('#btnCalcFreteCEN').attr('disabled', false); 1053 $('#divGif').html('<div class="alert alert-warning">Erro ao calcular rota. Tente novamente.</div>'); 1054 resolve({ status: 'erro', msg: errorThrown }); // resolve mesmo em erro â não trava o Worker Pool 1055 } 1056 }); 1057 } 1058 1059 } else { 1060 resolve({ status: 'pulado', msg: 'Coordenadas inválidas' }); 1061 } 1062 // document.getElementById('divJsonTeste').innerHTML += ' <br>p1= ' + p1;
1063 if ((p1 === 1) || (p1 === '1')) { 1064 1065 if (document.getElementById('configEnderecobase')) { 1066 1067 if (document.getElementById('configEnderecobase').value == 'S') { 1068 1069 calcularDistanciaEnderecoBase(); 1070 } 1071 1072 } 1073 1074 if (document.getElementById('distanciaClubeMotoboy')) { 1075 /** 1076 * clube do motoboy, tem que calcular a distancia do clube 1077 * até o ponto 1 1078 */ 1079 // document.getElementById('divJsonTeste').innerHTML += ' <br>calcular distancia até clube= ' + p1; 1080 var tipoVeiculo = ''; 1081 if (document.getElementById('tipoVeiculo')) { 1082 tipoVeiculo = document.getElementById('tipoVeiculo').value; 1083 } 1084 // alert('tipoVeiculo clube '+tipoVeiculo); 1085 if (tipoVeiculo != 'DC') { 1086 /** 1087 * foi pedido chamado 2622 1088 * retirar deslocamento do modulo cliente contrato delivery( contrato) 1089 */ 1090 // alert(' calcula dist clube tipoVeiculo clube ' + tipoVeiculo); 1091 calcularDistanciaClubeMotoboyPonto1(); 1092 $('#btnCalcFreteCEN').attr('disabled', false); 1093 } 1094 } 1095 if (document.getElementById('distanciasantafacilidade')) { 1096 /** 1097 * clube do motoboy, tem que calcular a distancia do clube 1098 * até o ponto 1 1099 */ 1100 // document.getElementById('divJsonTeste').innerHTML += ' <br>calcular distancia até clube= ' + p1; 1101 calcularDistanciaSantaFacilidadePonto1(); 1102 $('#btnCalcFreteCEN').attr('disabled', false); 1103 } 1104 } 1105 } else { 1106 // alert(' la e lo vazio la p2 = '+$("#latitudeE" + p2).val()+ ' lap1 '+$("#latitudeE" + p1).val()); 1107 console.log('ainda vazio latitude p1 ' + p1 + ' p2 ' + p2); 1108 resolve({ status: 'pulado', msg: 'Coordenadas vazias' }); 1109 } 1110 }); // fim Promise 1111 } 1112 1113 async function calcularDistanciaRotaGoogle(p1, p2, retorno, time = 1000) { 1114 1115 if (($("#latitudeE" + p1).val() !== '') & ($("#latitudeE" + p2).val() !== '')) { 1116 1117 var inicio = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val(); 1118 var fim = $("#latitudeE" + p2).val() + "," + $("#longitudeE" + p2).val(); 1119 var endPonto1 = $("#txtEnderecoE" + p1).val(); 1120 var endPonto2 = $("#txtEnderecoE" + p2).val(); 1121 1122 /** 1123 * calcular rota pelo ajax 1124 */ 1125 var tipoVeiculo = ''; 1126 if (document.getElementById('tipoVeiculo')) { 1127 tipoVeiculo = document.getElementById('tipoVeiculo').value; 1128 } 1129 1130 var calculando = 'N'; 1131 if (calculandoDistanciaPonto.indexOf(p2)) { 1132 console.log('index calculandoDistanciaPonto p2 ' + calculandoDistanciaPonto[p2] + ' p2= ' + p2); 1133 if (calculandoDistanciaPonto[p2] !== 'S') { 1134 1135 calculandoDistanciaPonto[p2] = 'S'; 1136 console.log('vai calcular ' + p1 + ' p2 ' + p2); 1137 1138 calculando = 'S'; 1139 } 1140 } 1141 if (calculando === 'S') { 1142 1143 document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Aguarde...'; 1144 1145 console.log('inicio ' + inicio + ' fim ' + fim + ' p1' + p1 + ' p2 ' + p2 + ' retorno' + retorno + ' tipoVeiculo' + tipoVeiculo); 1146 1147 sleep(time).then(() => { 1148 calcularDistanciaPeloGoogle(tipoVeiculo, inicio, fim, p1, p2, retorno); 1149 }); 1150 } 1151 // document.getElementById('divJsonTeste').innerHTML += ' <br>p1= ' + p1;
1152 if ((p1 === 1) || (p1 === '1')) { 1153 1154 if (document.getElementById('configEnderecobase')) { 1155 1156 if (document.getElementById('configEnderecobase').value == 'S') { 1157 1158 calcularDistanciaEnderecoBase(); 1159 } 1160 1161 } 1162 1163 if (document.getElementById('distanciaClubeMotoboy')) { 1164 /** 1165 * clube do motoboy, tem que calcular a distancia do clube 1166 * até o ponto 1 1167 */ 1168 // document.getElementById('divJsonTeste').innerHTML += ' <br>calcular distancia até clube= ' + p1; 1169 var tipoVeiculo = ''; 1170 if (document.getElementById('tipoVeiculo')) { 1171 tipoVeiculo = document.getElementById('tipoVeiculo').value; 1172 } 1173 // alert('tipoVeiculo clube '+tipoVeiculo); 1174 if (tipoVeiculo != 'DC') { 1175 /** 1176 * foi pedido chamado 2622 1177 * retirar deslocamento do modulo cliente contrato delivery( contrato) 1178 */ 1179 // alert(' calcula dist clube tipoVeiculo clube ' + tipoVeiculo); 1180 calcularDistanciaClubeMotoboyPonto1(); 1181 } 1182 } 1183 if (document.getElementById('distanciasantafacilidade')) { 1184 /** 1185 * clube do motoboy, tem que calcular a distancia do clube 1186 * até o ponto 1 1187 */ 1188 // document.getElementById('divJsonTeste').innerHTML += ' <br>calcular distancia até clube= ' + p1; 1189 calcularDistanciaSantaFacilidadePonto1(); 1190 } 1191 } 1192 } else { 1193 // alert(' la e lo vazio la p2 = '+$("#latitudeE" + p2).val()+ ' lap1 '+$("#latitudeE" + p1).val()); 1194 console.log('ainda vazio latitude p1 ' + p1 + ' p2 ' + p2); 1195 1196 } 1197 } 1198 1199 function calcularDistanciaEnderecoBase() { 1200 1201 $('#btnCalcFreteCEN').attr('disabled', true); 1202 let laP = $("#laEnderecoBase").val(); 1203 let loP = $("#loEnderecoBase").val(); 1204 1205 let laP1 = $("#latitudeE1").val(); 1206 let loP2 = $("#longitudeE1").val(); 1207 1208 let calculando = 'S'; 1209 1210 if (validateLatLng(laP, loP) != true) { 1211 calculando = 'N'; 1212 } 1213 1214 if (validateLatLng(laP1, loP2) != true) { 1215 calculando = 'N'; 1216 } 1217 1218 1219 if (calculando == 'S') { 1220 if ((laP1 != '' && loP2 != '') && (laP != '' && loP != '')) { 1221 1222 let tipoVeiculo = 'M'; 1223 if (document.getElementById('tipoVeiculo')) { 1224 tipoVeiculo = document.getElementById('tipoVeiculo').value; 1225 } 1226 1227 document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Aguarde...'; 1228 1229 $.post("enderecosServico/enderecoAdicional/ajaxCalcularDistanciaEnderecoBase.php", { 1230 laP: laP, 1231 loP: loP, 1232 laP1: laP1, 1233 loP2: loP2, 1234 tipoVeiculo: tipoVeiculo 1235 }, function(retorno) { 1236 $('#divGif').html(retorno); 1237 $('#btnCalcFreteCEN').attr('disabled', false); 1238 }, 'html'); 1239 } 1240 } 1241 1242 } 1243 1244 function calcularDistanciaClubeMotoboyPonto1() { 1245 var p1 = 1; 1246 var p2 = 2; 1247 // la e lo do clube -19.9425982,-43.9407188 1248 if (($("#latitudeE1" + p1).val() !== '') & ($("#latitudeE" + p2).val() !== '')) { 1249 var inicio = '-19.9425982,-43.9407188'; 1250 var fim = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val(); 1251 1252 // document.getElementById('divJsonTeste').innerHTML += ' <br>p1= ' + inicio+','+fim; 1253 /** 1254 * calcular rota pelo ajax 1255 */ 1256 var tipoVeiculo = 'M'; 1257 if (document.getElementById('tipoVeiculo')) { 1258 tipoVeiculo = document.getElementById('tipoVeiculo').value; 1259 } 1260 1261 document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Aguarde...'; 1262 1263 1264 // $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRota.php", { 1265 $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaClubeMotoboy.php", { 1266 inicio: inicio, 1267 fim: fim, 1268 p1: p1, 1269 p2: p2, 1270 tipoVeiculo: tipoVeiculo 1271 }, 1272 function(retorno) { 1273 $('#divGif').html(retorno); 1274 1275 }, 'html'); 1276 } else { 1277 // alert(' la e lo vazio la p2 = '+$("#latitudeE" + p2).val()+ ' lap1 '+$("#latitudeE" + p1).val()); 1278 } 1279 } 1280 1281 function calcularDistanciaSantaFacilidadePonto1() { 1282 var p1 = 1; 1283 var p2 = 2; 1284 // la e lo do clube -19.9425982,-43.9407188 1285 if (($("#latitudeE1" + p1).val() !== '') & ($("#latitudeE" + p2).val() !== '')) { 1286 var inicio = '-27.5967526,-48.5579545'; 1287 var fim = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val(); 1288 1289 // document.getElementById('divJsonTeste').innerHTML += ' <br>p1= ' + inicio+','+fim; 1290 /** 1291 * calcular rota pelo ajax 1292 */ 1293 var tipoVeiculo = 'M'; 1294 if (document.getElementById('tipoVeiculo')) { 1295 tipoVeiculo = document.getElementById('tipoVeiculo').value; 1296 } 1297 1298 document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Aguarde...'; 1299 1300 1301 // $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRota.php", { 1302 $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaSantaFacilidade.php", { 1303 inicio: inicio, 1304 fim: fim, 1305 p1: p1, 1306 p2: p2, 1307 tipoVeiculo: tipoVeiculo 1308 }, 1309 function(retorno) { 1310 $('#divGif').html(retorno); 1311 1312 }, 'html'); 1313 } else { 1314 // alert(' la e lo vazio la p2 = '+$("#latitudeE" + p2).val()+ ' lap1 '+$("#latitudeE" + p1).val()); 1315 } 1316 } 1317 1318 function calcularDistanciaRotaTracandoRota(p1, p2, retorno) { 1319 1320 //function calcularDistanciaRotaTracandoRota(p1, p2, retorno,valorRadio='') 1321 var valorRadio = ''; 1322 if (arguments.length > 3) { 1323 valorRadio = arguments[arguments.length - 1]; 1324 } 1325 1326 if (($("#latitudeE" + p1).val() !== '') && ($("#latitudeE" + p2).val() !== '')) { 1327 if (tipoCalculoPonto == 'P1') { 1328 var inicio = $("#latitudeE1").val() + "," + $("#longitudeE1").val(); 1329 1330 let p1Num = parseInt(p1); 1331 let p2Num = parseInt(p2); 1332 1333 if (p1Num > p2Num) { 1334 var inicio = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val(); 1335 } 1336 } else { 1337 var inicio = $("#latitudeE" + p1).val() + "," + $("#longitudeE" + p1).val(); 1338 } 1339 1340 var fim = $("#latitudeE" + p2).val() + "," + $("#longitudeE" + p2).val(); 1341 1342 /** 1343 * calcular rota pelo ajax 1344 */ 1345 var tipoVeiculo = ''; 1346 if (document.getElementById('tipoVeiculo')) { 1347 tipoVeiculo = document.getElementById('tipoVeiculo').value; 1348 } 1349 1350 1351 // document.getElementById('divJsonTeste').innerHTML += '<br> inicio= ' + inicio + ' fim = ' + fim; 1352 1353 apareceDiv('divGif'); 1354 document.getElementById('divGif').innerHTML = '<img src="imagens/carregando.gif" /><br />Aguarde...'; 1355 1356 /** 1357 * marcar radio 1358 */ 1359 if (document.getElementsByName('categoriaSel')) { 1360 1361 var radios = document.getElementsByName("categoriaSel"); 1362 1363 for (var i = 0; i < radios.length; i++) { 1364 if (radios[i].value === valorRadio) { 1365 radios[i].checked = true; 1366 } 1367 } 1368 } 1369 // $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRota.php", { 1370 $.post("enderecosServico/enderecoAdicional/ajaxCalculaDistanciaRotaJavascriptTracanDoRota.php", { 1371 inicio: inicio, 1372 fim: fim, 1373 p1: p1, 1374 p2: p2, 1375 retorno: retorno, 1376 tipoVeiculo: tipoVeiculo 1377 }, 1378 function(retorno) { 1379 $('#divGif').html(retorno); 1380 1381 }, 'html'); 1382 1383 // document.getElementById('divJsonTeste').innerHTML += ' <br>p1= ' + p1;
1384 if ((p1 === 1) || (p1 === '1')) { 1385 if (document.getElementById('distanciaClubeMotoboy')) { 1386 /** 1387 * clube do motoboy, tem que calcular a distancia do clube 1388 * até o ponto 1 1389 */ 1390 // document.getElementById('divJsonTeste').innerHTML += ' <br>calcular distancia até clube= ' + p1; 1391 1392 var tipoVeiculo = ''; 1393 if (document.getElementById('tipoVeiculo')) { 1394 tipoVeiculo = document.getElementById('tipoVeiculo').value; 1395 } 1396 // alert('tipoVeiculo clube '+tipoVeiculo); 1397 if (tipoVeiculo != 'DC') { 1398 calcularDistanciaClubeMotoboyPonto1(); 1399 } 1400 } 1401 } 1402 } else { 1403 // alert(' la e lo vazio la p2 = ' + $("#latitudeE" + p2).val() + ' lap1 ' + $("#latitudeE" + p1).val()); 1404 } 1405 } 1406 1407 function fecharDivSolicServicoPainel() { 1408 if (document.getElementById('divGravarPedidoPainelNovo')) { 1409 document.getElementById('divGravarPedidoPainelNovo').innerHTML = ''; 1410 } 1411 } 1412</script>
1412 1413 1414 <link rel="stylesheet" href="css/styleDoc.css?v=1790903925"> 1415</head> 1416 1417<body> 1418 <style> 1419 .preloader { 1420 display: none; 1421 } 1422 </style> 1423 1424 <!-- Start Preloader Area --> 1425 1426<div class="preloader"> 1427 <div class="preloader"> 1428 <span></span> 1429 <span></span> 1430 </div> 1431</div> 1432<!-- End Preloader Area --> 1433 1434<!-- Start Navbar Area --> 1435<div class="navbar-area navbar-two"> 1436 <div class="mapp-responsive-nav"> 1437 <div class="container"> 1438 <div class="mapp-responsive-menu"> 1439 <div class="logo"> 1440 <a href="../"> 1441 <img src="../configClientesNovos/sites/dudus/logG.png?=v2" alt="logo"> 1442 </a> 1443 </div> 1444 </div> 1445 </div> 1446 </div> 1447 1448 <div class="mapp-nav"> 1449 <div class="container"> 1450 <nav class="navbar navbar-expand-md navbar-light"> 1451 <a class="navbar-brand" href="../"> 1452 <img src="../configClientesNovos/sites/dudus/logG.png?=v2" alt="logo"> 1453 </a> 1454 1455 </nav> 1456 </div> 1457 1458 </div> 1459</div> 1460</div> 1461<!-- End Navbar Area --> 1462 <div class="row tituloDocumentacao"> 1463 <div class="col-md-12 text-center" style="color: black;"> 1464 <h3>Documentação Técnica</h3> 1465 </div> 1466 </div> 1467 1468 <div class="border-top"> 1469 <div class="container-fluid"> 1470 <div class="row paddingRow"> 1471 <div class="col-md-3" id="menuNav"> 1472 <div id="menuSuspenso"></div> 1473<div class="border rounded me-3 px-4 pt-3 corColuna menuSuspenso mb-3" id="menu"> 1474 <div class="itemMenu mb-3" id="versao2" style="cursor: pointer;" onclick="documentacaoMostrar('V2');">Introdução</div> 1475 <div class="itemMenu mb-3" id="calcularServico" style="cursor: pointer;" onclick="documentacaoMostrar('CS');">API Calcular Serviço</div> 1476 <div class="itemMenu mb-3" id="solicitarNormal" style="cursor: pointer;" onclick="documentacaoMostrar('GS');">API Solicitar Serviço</div> 1477 <div class="itemMenu mb-3" id="listarVagasGestao" style="cursor: pointer;" onclick="documentacaoMostrar('LVG');">API Listar Vagas (Gestão de Vagas)</div> 1478 <div class="itemMenu mb-3" id="BairroCidadeRegiao" style="cursor: pointer;" onclick="abrirMenu('apiBairroCidadeRegiao');">API Bairro, Cidade e Região</div> 1479 <div id="apiBairroCidadeRegiao" style="display: none;"> 1480 <div class="itemMenu mb-3" id="gravarServico" style="cursor: pointer;" onclick="subMenuSolicitar('subMenuListarServico')">- API Listar 1481 <div id="subMenuListarServico" style="display: none;"> 1482 <div class="itemMenu subMenuItens" id="listarRegioesFixa" style="cursor: pointer;" onclick="documentacaoMostrar('LRF');">* Listar Regiões Com Valores Fixos</div> 1483 <div class="itemMenu subMenuItens" id="listarRegioesCoordenadas" style="cursor: pointer;" onclick="documentacaoMostrar('LRC');">* Listar Regiões Com Valores Por Coordenadas</div> 1484 </div> 1485 </div> 1486 <div class="itemMenu mb-3" id="gravarServico" style="cursor: pointer;" onclick="subMenuSolicitar('subMenuBairroCidadeRegiao')">- API Gravar Serviço 1487 <div id="subMenuBairroCidadeRegiao" style="display: none;"> 1488 <div class="itemMenu subMenuItens" id="solicitarValoresFixo" style="cursor: pointer;" onclick="documentacaoMostrar('SVF');">* Solicitar Com Valores Fixos</div> 1489 <div class="itemMenu subMenuItens" id="solicitarCodigoRegiao" style="cursor: pointer;" onclick="documentacaoMostrar('SCR');">* Solicitar Com Código Da Região</div> 1490 <div class="itemMenu subMenuItens" id="solicitarCoordenadasRecebidas" style="cursor: pointer;" onclick="documentacaoMostrar('SCRE');">* Solicitar Com Coordenadas Recebidas</div> 1491 </div> 1492 </div> 1493 </div> 1494 <div class="itemMenu mb-3" id="buscarProfissionais" style="cursor: pointer;" onclick="documentacaoMostrar('bcpfs');">API Buscar profissionais</div> 1495 <div class="itemMenu mb-3" id="buscarProfissionalAtivo" style="cursor: pointer;" onclick="documentacaoMostrar('BPA');">API Busca Status Profissional</div> 1496 <div class="itemMenu mb-3" id="cancelarServico" style="cursor: pointer;" onclick="documentacaoMostrar('CanS');">API Cancelar Serviço</div> 1497 <div class="itemMenu mb-3" id="statusServico" style="cursor: pointer;" onclick="documentacaoMostrar('SS');">API Status Serviço</div> 1498 <div class="itemMenu mb-3" id="cadastrarServico" style="cursor: pointer;" onclick="documentacaoMostrar('CadS');">API Cadastrar Cliente</div> 1499 <div class="itemMenu mb-3" id="buscarCliente" style="cursor: pointer;" onclick="documentacaoMostrar('BC');">API Buscar Cliente</div> 1500 <div class="itemMenu mb-3" id="uploadServico" style="cursor: pointer;" onclick="documentacaoMostrar('UPSER');">API Upload Serviço</div> 1501 <div class="itemMenu mb-3" id="finalizarServico" style="cursor: pointer;" onclick="documentacaoMostrar('FS');">API Finalizar Serviço</div> 1502 <div class="itemMenu mb-3" id="saldoCreditoCliente" style="cursor: pointer;" onclick="documentacaoMostrar('SCC');">API Saldo Crédito Cliente </div> 1503 <div class="itemMenu mb-3" id="adicionarEndereco" style="cursor: pointer;" onclick="documentacaoMostrar('ADE');">API Adicionar Endereço </div> 1504 <div class="itemMenu mb-3" id="removerEndereco" style="cursor: pointer;" onclick="documentacaoMostrar('RE');">API Remover Endereço </div> 1505 <div class="itemMenu mb-3" id="incluuirEnderecosSistemaRotas" style="cursor: pointer;" onclick="documentacaoMostrar('ENDSIS');">API Endereços Sistema Rotas </div> 1506</div> 1507 1508<div id="menuLateral" style="display: none;" onclick="mostrarMenu()"> 1509 <img src="./img/menu.png" alt="Menu Lateral"> 1510</div> 1511 1512<div class="menuLateralNav px-3" id="menuLateralNav" style="display: none;"> 1513 <div class="itemMenu mb-3 mt-4 top768px" id="versao2M" style="cursor: pointer;" onclick="documentacaoMostrar('V2');">Introdução</div> 1514 <div class="itemMenu mb-3" id="calcularServicoM" style="cursor: pointer;" onclick="documentacaoMostrar('CS');">API Calcular Serviço</div> 1515 <div class="itemMenu mb-3" id="solicitarNormalM" style="cursor: pointer;" onclick="documentacaoMostrar('GS');">API Solicitar Serviço</div> 1516 <div class="itemMenu mb-3" id="listarVagasGestaoM" style="cursor: pointer;" onclick="documentacaoMostrar('LVG');">API Listar Vagas (Gestão de Vagas)</div> 1517 <div class="itemMenu mb-3" id="BairroCidadeRegiaoM" style="cursor: pointer;" onclick="abrirMenu('apiBairroCidadeRegiaoM');">API Bairro, Cidade e Região</div> 1518 <div id="apiBairroCidadeRegiaoM" style="display: none;"> 1519 <div class="itemMenu mb-3" id="gravarServicoM" style="cursor: pointer;" onclick="subMenuSolicitar('subMenuListarServicoM')">- API Listar 1520 <div id="subMenuListarServicoM" style="display: none;"> 1521 <div class="itemMenu subMenuItens" id="listarRegioesFixaM" style="cursor: pointer;" onclick="documentacaoMostrar('LRF');">* Listar Regiões Com Valores Fixos</div> 1522 <div class="itemMenu subMenuItens" id="listarRegioesCoordenadasM" style="cursor: pointer;" onclick="documentacaoMostrar('LRC');">* Listar Regiões Com Valores Por Coordenadas</div> 1523 </div> 1524 </div> 1525 <div class="itemMenu mb-3" id="gravarServicoM" style="cursor: pointer;" onclick="subMenuSolicitar('subMenuBairroCidadeRegiaoM')">- API Gravar Serviço 1526 <div id="subMenuBairroCidadeRegiaoM" style="display: none;"> 1527 <div class="itemMenu subMenuItens" id="solicitarValoresFixoM" style="cursor: pointer;" onclick="documentacaoMostrar('SVF');">* Solicitar Com Valores Fixos</div> 1528 <div class="itemMenu subMenuItens" id="solicitarCodigoRegiaoM" style="cursor: pointer;" onclick="documentacaoMostrar('SCR');">* Solicitar Com Código Da Região</div> 1529 <div class="itemMenu subMenuItens" id="solicitarCoordenadasRecebidasM" style="cursor: pointer;" onclick="documentacaoMostrar('SCRE');">* Solicitar Com Coordenadas Recebidas</div> 1530 </div> 1531 </div> 1532 </div> 1533 <div class="itemMenu mb-3" id="buscarProfissionaisM" style="cursor: pointer;" onclick="documentacaoMostrar('bcpfs');">Buscar profissionais</div> 1534 <div class="itemMenu mb-3" id="buscarProfissionalAtivoM" style="cursor: pointer;" onclick="documentacaoMostrar('BPA');">API Busca Status Profissional</div> 1535 <div class="itemMenu mb-3" id="cancelarServicoM" style="cursor: pointer;" onclick="documentacaoMostrar('CanS');">API Cancelar Serviço</div> 1536 <div class="itemMenu mb-3" id="statusServicoM" style="cursor: pointer;" onclick="documentacaoMostrar('SS');">API Status Serviço</div> 1537 <div class="itemMenu mb-3" id="cadastrarServicoM" style="cursor: pointer;" onclick="documentacaoMostrar('CadS');">API Cadastrar Cliente</div> 1538 <div class="itemMenu mb-3" id="buscarClienteM" style="cursor: pointer;" onclick="documentacaoMostrar('BC');">API Buscar Cliente</div> 1539 <div class="itemMenu mb-3" id="uploadServicoM" style="cursor: pointer;" onclick="documentacaoMostrar('UPSER');">API Upload Serviço</div> 1540 <div class="itemMenu mb-3" id="finalizarServicoM" style="cursor: pointer;" onclick="documentacaoMostrar('FS');">API Finalizar Serviço</div> 1541 <div class="itemMenu mb-3" id="saldoCreditoClienteM" style="cursor: pointer;" onclick="documentacaoMostrar('SCC');">API Saldo Crédito Cliente </div> 1542 <div class="itemMenu mb-3" id="adicionarEnderecoM" style="cursor: pointer;" onclick="documentacaoMostrar('ADE');">API Adicionar Endereço </div> 1543 <div class="itemMenu mb-3" id="removerEnderecoM" style="cursor: pointer;" onclick="documentacaoMostrar('RE');">API Remover Endereço </div> 1544 <div class="itemMenu mb-3" id="incluuirEnderecosSistemaRotasM" style="cursor: pointer;" onclick="documentacaoMostrar('ENDSIS');">API Endereços Sistema Rotas</div> 1545</div> </div> 1546 <div class="col-md-9" id="conteudo"> 1547 1548 </div> 1549 </div> 1550 </div> 1551 </div> 1552 1553 1554 <!--
1554<script type="text/javascript" src="js/main.js?v=50"></script>
1554 --> 1555
1555<script type="text/javascript" src="js/scriptDoc.js?v=1790903925"></script>
1555 1556 1557
1557<script> 1558 documentacaoMostrar(''); 1559 </script>
vendor: 1 bytes, line 1559
1559
1560<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"92600bbe634746439afc5b6a4b76592a","r":1,"spa":2}' crossorigin="anonymous"></script>
1560 1561</body> 1562 1563</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.