Este é um exemplo de código HTML e JavaScript para inicializar um mapa:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mapa com IArotas</title>
<!-- Importação do IArotas -->
<link rel="stylesheet" href="https://iarotas.com.br/IArotas/IArotas.css" />
<script src="https://iarotas.com.br/IArotas/IArotas.js"></script>
<style>
/* Define o tamanho do mapa */
#map {
height: 500px;
width: 100%;
}
</style>
</head>
<body>
<h2>Mapa com IArotas</h2>
<div id="map"></div>
<script>
document.addEventListener("DOMContentLoaded", function () {
// Inicializa o mapa e define o centro e o zoom
const map = L.map('map').setView([-19.9269086, -43.9386425], 13);
// Adiciona um mapa base
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 19,
attribution: ''
}).addTo(map);
// Definição de dois pontos e ajuste de limites do mapa
const bounds = L.latLngBounds([
[-19.9269086, -43.9386425], // Ponto 1
[-19.7996, -44.018] // Ponto 2
]);
map.fitBounds(bounds); // Ajusta o zoom para incluir os pontos
// Adiciona marcadores nos pontos
L.marker([-19.9269086, -43.9386425]).addTo(map)
.bindPopup("Ponto 1: Belo Horizonte").openPopup();
L.marker([-19.7996, -44.018]).addTo(map)
.bindPopup("Ponto 2: Região Metropolitana");
// Desenha uma linha entre os dois pontos
L.polyline([
[-19.9269086, -43.9386425],
[-19.7996, -44.018]
], { color: 'blue' }).addTo(map);
});
</script>
</body>
</html>
O que faz: Ajusta a visualização do mapa para que todos os marcadores ou elementos estejam visíveis dentro de uma área delimitada.
const bounds = L.latLngBounds([
[-19.9269086, -43.9386425], // Coordenadas do ponto 1
[-19.7996, -44.018] // Coordenadas do ponto 2
]);
map.fitBounds(bounds); // Ajusta o zoom para mostrar ambos os pontos
O que faz: Define o centro e o nível de zoom do mapa.
map.setView([-19.9269086, -43.9386425], 13); // Centraliza o mapa nas coordenadas e define o zoom para 13
O que faz: Adiciona uma camada de tiles (imagens de mapa) ao mapa. Pode ser usado para carregar mapas de diferentes provedores, como OpenStreetMap, Google Maps, etc.
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
maxZoom: 19,
attribution: ''
}).addTo(map); // Adiciona o mapa
O que faz: Cria um retângulo geográfico que define uma área delimitada por coordenadas. Útil para ajustar o zoom do mapa ou verificar se um ponto está dentro de uma área.
const bounds = L.latLngBounds([
[-19.9269086, -43.9386425], // Coordenadas do ponto 1
[-19.7996, -44.018] // Coordenadas do ponto 2
]);
O que faz: Desenha uma linha no mapa conectando uma série de coordenadas.
const polyline = L.polyline([
[-19.9269086, -43.9386425], // Coordenadas do ponto 1
[-19.7996, -44.018] // Coordenadas do ponto 2
], { color: 'blue' }).addTo(map); // Adiciona uma linha azul ao mapa
O que faz: Cria um ícone personalizado usando HTML e CSS. Útil para criar marcadores personalizados.
const customIcon = L.divIcon({
className: 'custom-icon', // Classe CSS para estilização
html: ''
});
L.marker([-19.9269086, -43.9386425], { icon: customIcon }).addTo(map); // Adiciona um marcador personalizado
O que faz: Adiciona um marcador no mapa em uma localização específica.
L.marker([-19.9269086, -43.9386425]).addTo(map); // Adiciona um marcador no mapa
O que faz: Cria um ícone personalizado para marcadores. Pode ser usado para definir ícones personalizados com imagens.
const customIcon = L.icon({
iconUrl: 'marker-icon.png', // URL da imagem do ícone
iconSize: [38, 38], // Tamanho do ícone
iconAnchor: [19, 38] // Ponto de ancoragem do ícone
});
L.marker([-19.9269086, -43.9386425], { icon: customIcon }).addTo(map); // Adiciona um marcador com ícone personalizado
async function buscarLatLong(endereco) {
try {
// Faz a requisição POST para a API
const response = await fetch('https://iarotas.com.br/api/address', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify([{
"codigo": "001", // Código fixo (ajuste conforme necessário)
"endereco": endereco // Endereço passado como parâmetro
}])
});
// Verifica se a requisição foi bem-sucedida
if (!response.ok) {
throw new Error(`Erro na requisição: ${response.status} ${response.statusText}`);
}
// Converte a resposta para JSON
const data = await response.json();
// Exibe a resposta da API no console
console.log('Resposta da API:', data);
} catch (error) {
// Captura e exibe qualquer erro que ocorra
console.error('Erro ao buscar lat e long:', error);
}
}
async function buscaEndereco(lat, lon) {
const url = 'https://iarotas.com.br/api/getAddressFromCoordinates';
try {
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': token
},
body: JSON.stringify({
lat: lat,
lon: lon
})
});
if (!response.ok) {
throw new Error(`Erro: ${response.status} - ${response.statusText}`);
}
const data = await response.json();
console.log('Endereço:', data);
return data;
} catch (error) {
console.error('Erro ao buscar endereço:', error);
throw error;
}
}
A API também permite a importação de arquivos KML e JSON. O arquivo KML deve seguir o padrão da versão 2.2.
Exemplo de Importação de KML:
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Exemplo KML</name>
<Placemark>
<name>Ponto 1</name>
<Point>
<coordinates>-43.9386425,-19.9269086,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>
Exemplo de Código JavaScript para Importação de KML:
document.getElementById('fileInput').addEventListener('change', function (event) {
const file = event.target.files[0];
if (!file) {
alert('Por favor, selecione um arquivo KML.');
return;
}
const reader = new FileReader();
reader.onload = function () {
const kmlText = reader.result;
// Parseia o KML
const parser = new DOMParser();
const kml = parser.parseFromString(kmlText, 'application/xml');
// Verifica se é um KML versão 2.2
const kmlNamespace = kml.documentElement.namespaceURI;
if (kmlNamespace !== 'http://www.opengis.net/kml/2.2' && kmlNamespace !== 'http://earth.google.com/kml/2.2') {
alert('Por favor, importe um arquivo KML na versão 2.2.');
return;
}
// Processa os Placemarks
const places = [];
const placemarks = kml.getElementsByTagName('Placemark');
for (let placemark of placemarks) {
const name = placemark.querySelector('name')?.textContent || 'Sem nome';
const point = placemark.querySelector('Point > coordinates');
if (point) {
const [longitude, latitude] = point.textContent.trim().split(',').slice(0, 2).map(parseFloat);
places.push({
name: name,
latitude: latitude,
longitude: longitude
});
}
}
const jsonResult = { places };
// Exibe o JSON no console e na tela
console.log('JSON Gerado:', jsonResult);
document.getElementById('output').textContent = JSON.stringify(jsonResult, null, 2);
};
reader.readAsText(file);
});
Exemplo de Importação de JSON:
{
"clientes": [
{
"cliente": "AAAA",
"lat": -19.9269086,
"long": -43.9386425
},
{
"cliente": "AAAB",
"lat": -19.7996,
"long": -44.018
},
{
"cliente": "AAAC",
"lat": -19.7664,
"long": -44.0875
},
{
"cliente": "AAAD",
"lat": -19.7710406,
"long": -44.085105099999964
},
{
"cliente": "AAAE",
"lat": -19.7661033,
"long": -44.08916310000001
},
{
"cliente": "AAAF",
"lat": -19.7644771,
"long": -44.08510910000001
},
{
"cliente": "AAAG",
"lat": -19.777820260984598,
"long": -44.07835782527009
},
{
"cliente": "AAAH",
"lat": -19.789935,
"long": -43.98953399999999
},
{
"cliente": "AAAI",
"lat": -19.7870624,
"long": -43.989568099999985
},
{
"cliente": "AAAJ",
"lat": -19.788533,
"long": -43.98746900000003
},
{
"cliente": "AAAK",
"lat": -19.7961202,
"long": -43.9956219
},
{
"cliente": "AAAL",
"lat": -19.792588,
"long": -44.00928120000003
},
{
"cliente": "AAAM",
"lat": -19.7920557,
"long": -44.004045700000006
},
{
"cliente": "AAAN",
"lat": -19.79675247,
"long": -43.98719409
},
{
"cliente": "AAAO",
"lat": -19.7979982,
"long": -43.9842711
},
{
"cliente": "AAAP",
"lat": -19.79155474,
"long": -43.98569003
},
{
"cliente": "AAAQ",
"lat": -19.780135,
"long": -43.98307990000001
},
{
"cliente": "AAAR",
"lat": -19.8152031,
"long": -43.95794510000002
},
{
"cliente": "AAAS",
"lat": -19.8146927,
"long": -43.959083599999985
},
{
"cliente": "AAAT",
"lat": -19.8076724,
"long": -43.96997870000001
},
{
"cliente": "AAAU",
"lat": -19.7554866,
"long": -43.99227910000002
},
{
"cliente": "AAAV",
"lat": -19.8213896,
"long": -43.9664677
},
{
"cliente": "AAAW",
"lat": -19.803566847760596,
"long": -43.98036913486253
},
{
"cliente": "AAAX",
"lat": -19.8023,
"long": -44.0015
},
{
"cliente": "AAAY",
"lat": -19.8109506,
"long": -44.0103441
},
{
"cliente": "AAAZ",
"lat": -19.8813562,
"long": -44.04655730000002
},
{
"cliente": "AABA",
"lat": -19.87953114,
"long": -44.05006467
},
{
"cliente": "AABB",
"lat": -19.8280580372522,
"long": -43.9651262418335
},
{
"cliente": "AABC",
"lat": -19.78754233,
"long": -44.00940284
},
{
"cliente": "AABD",
"lat": -19.8163818,
"long": -44.01220209999997
},
{
"cliente": "AABE",
"lat": -19.8037448,
"long": -43.978814599999964
},
{
"cliente": "AABG",
"lat": -19.8983689,
"long": -44.00464459
},
{
"cliente": "AABH",
"lat": -19.780548,
"long": -43.9873192
},
{
"cliente": "AABI",
"lat": -19.75472570220318,
"long": -44.000903505371085
},
{
"cliente": "AABJ",
"lat": -19.7534337,
"long": -44.08234620000002
},
{
"cliente": "AABK",
"lat": -19.7919086,
"long": -44.021448899999996
},
{
"cliente": "AABL",
"lat": -19.812937736532078,
"long": -43.96358329783096
},
{
"cliente": "AABM",
"lat": -19.8047293,
"long": -44.00051389999999
},
{
"cliente": "AABN",
"lat": -19.8158764,
"long": -43.9827315
},
{
"cliente": "AABO",
"lat": -19.8134122,
"long": -43.984250799999984
},
{
"cliente": "AABP",
"lat": -19.8118355,
"long": -43.982843900000034
},
{
"cliente": "AABQ",
"lat": -19.8117667,
"long": -43.9824375
},
{
"cliente": "AABR",
"lat": -19.8083693,
"long": -43.98123169999997
},
{
"cliente": "AABS",
"lat": -19.8110799,
"long": -43.9802732
},
{
"cliente": "AABT",
"lat": -19.815,
"long": -43.9589
},
{
"cliente": "AABU",
"lat": -19.8223,
"long": -43.9598
},
{
"cliente": "AABV",
"lat": -19.8159,
"long": -43.9634
},
{
"cliente": "AABW",
"lat": -19.8159065,
"long": -43.96347539999999
},
{
"cliente": "AABX",
"lat": -19.8152276,
"long": -43.963773300000014
},
{
"cliente": "AABY",
"lat": -19.8877761,
"long": -44.048009500000035
},
{
"cliente": "AABZ",
"lat": -19.8803989,
"long": -44.04785939999999
},
{
"cliente": "AACA",
"lat": -19.881847408729886,
"long": -44.04613688888549
},
{
"cliente": "AACB",
"lat": -19.88699432609985,
"long": -44.04438537665176
},
{
"cliente": "AACC",
"lat": -19.808,
"long": -43.9834
},
{
"cliente": "AACD",
"lat": -19.8195756633002,
"long": -43.973805189757535
},
{
"cliente": "AACE",
"lat": -19.872891211740253,
"long": -43.98580198531952
}
]
}
Exemplo de Código JavaScript para Importação de JSON:
// Evento para carregar o arquivo JSON
document.getElementById('jsonFileInput').addEventListener('change', function (event) {
const file = event.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = function (e) {
try {
const jsonData = JSON.parse(e.target.result);
processJson(jsonData);
} catch (err) {
alert('Erro ao processar o JSON: ' + err.message);
}
};
reader.readAsText(file);
}
});
// Função para processar o JSON
function processJson(data) {
if (!data.places || !Array.isArray(data.places)) {
alert('O JSON não contém a estrutura esperada.');
return;
}
showLoading(); // Inicia o carregamento
data.places.forEach(async (place) => {
if (place.type === 'polygon') {
processPolygon(place);
} else if (place.type === 'line') {
await processLine(place);
}
});
hideLoading(); // Finaliza o carregamento após o processamento
alert('JSON processado e renderizado no mapa!');
}
// Função para processar polígonos
function processPolygon(place) {
L.polygon(place.coordinates, {
color: place.color,
fill: place.fill,
fillOpacity: place.fill ? 0.5 : 0,
opacity: place.outline ? 1 : 0
}).addTo(map);
}
// Função para processar linhas
async function processLine(place) {
if (place.realignRoute) {
try {
const updatedCoordinates = await realignRoute(place.coordinates);
place.coordinates = updatedCoordinates.coordinates;
console.log('Coordinates realigned:', updatedCoordinates.coordinates);
} catch (error) {
console.error('Erro ao realinhar a rota:', error);
return;
}
}
L.polyline(place.coordinates, {
color: place.color,
fill: place.fill,
fillOpacity: place.fill ? 0.5 : 0,
opacity: place.outline ? 1 : 0
}).addTo(map);
}
// Função para realinhar a rota via API
async function realignRoute(coordinates) {
const token = gerarToken();
const response = await fetch('https://iarotas.com.br/api/realignRoute', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify({ coordinates })
});
if (!response.ok) {
throw new Error('Falha ao realinhar a rota');
}
return response.json(); // Retorna as novas coordenadas
}
});
A API oferece três tipos de roteirizadores, cada um com funcionalidades específicas:
// JSON de entrada com os clientes
const jsonData = {
"clientes": [
{
"cliente": "AAAA",
"lat": -19.9269086,
"long": -43.9386425
},
{
"cliente": "AAAB",
"lat": -19.7996,
"long": -44.018
},
{
"cliente": "AAAC",
"lat": -19.7664,
"long": -44.0875
}
]
};
// Variáveis para armazenar a base (se existirem)
let latitudeBase = null; // Defina a latitude da base, se necessário
let longitudeBase = null; // Defina a longitude da base, se necessário
// Função assíncrona para enviar os dados
async function enviarDados(data) {
const url = 'https://iarotas.com.br/api/routerv1';
const token = gerarToken();
showLoading(); // Exibe um indicador de carregamento (supondo que essa função já esteja implementada)
try {
// **Adiciona a base à lista de clientes antes do envio, se existir**
if (latitudeBase !== null && longitudeBase !== null) {
data.clientes.unshift({
cliente: "BASE",
lat: latitudeBase,
long: longitudeBase
});
}
// Faz a requisição para a API
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': token
},
body: JSON.stringify(data)
});
// Converte a resposta para JSON
const responseData = await response.json();
console.log("Resposta da API:", responseData);
return responseData;
} catch (error) {
console.error("Erro ao enviar os dados:", error);
} finally {
hideLoading(); // Oculta o indicador de carregamento (caso tenha implementado essa função)
}
}
// Chamando a função para enviar os dados
enviarDados(jsonData);
import requests
import json
# JSON de entrada com os clientes
json_data = {
"clientes": [
{
"cliente": "AAAA",
"lat": -19.9269086,
"long": -43.9386425
},
{
"cliente": "AAAB",
"lat": -19.7996,
"long": -44.018
},
{
"cliente": "AAAC",
"lat": -19.7664,
"long": -44.0875
}
]
}
# Variáveis para armazenar a base (se existirem)
latitude_base = None # Defina a latitude da base, se necessário
longitude_base = None # Defina a longitude da base, se necessário
# Função para gerar o token (exemplo)
def gerar_token():
return "seu_token_aqui"
# Função para enviar os dados
def enviar_dados(data):
url = 'https://iarotas.com.br/api/routerv1'
token = gerar_token()
# Adiciona a base à lista de clientes antes do envio, se existir
if latitude_base is not None and longitude_base is not None:
data["clientes"].insert(0, {
"cliente": "BASE",
"lat": latitude_base,
"long": longitude_base
})
# Faz a requisição para a API
try:
response = requests.post(
url,
headers={
'Content-Type': 'application/json',
'Authorization': token
},
data=json.dumps(data)
)
response_data = response.json()
print("Resposta da API:", response_data)
return response_data
except Exception as error:
print("Erro ao enviar os dados:", error)
finally:
# Oculta o indicador de carregamento (caso tenha implementado essa função)
pass
# Chamando a função para enviar os dados
enviar_dados(json_data)
<?php
// JSON de entrada com os clientes
$jsonData = [
"clientes" => [
[
"cliente" => "AAAA",
"lat" => -19.9269086,
"long" => -43.9386425
],
[
"cliente" => "AAAB",
"lat" => -19.7996,
"long" => -44.018
],
[
"cliente" => "AAAC",
"lat" => -19.7664,
"long" => -44.0875
]
]
];
// Variáveis para armazenar a base (se existirem)
$latitudeBase = null; // Defina a latitude da base, se necessário
$longitudeBase = null; // Defina a longitude da base, se necessário
// Função para gerar o token (exemplo)
function gerarToken() {
return "seu_token_aqui";
}
// Função para enviar os dados
function enviarDados($data) {
$url = 'https://iarotas.com.br/api/routerv1';
$token = gerarToken();
// Adiciona a base à lista de clientes antes do envio, se existir
if ($latitudeBase !== null && $longitudeBase !== null) {
array_unshift($data['clientes'], [
"cliente" => "BASE",
"lat" => $latitudeBase,
"long" => $longitudeBase
]);
}
// Faz a requisição para a API
$options = [
'http' => [
'header' => [
'Content-Type: application/json',
'Authorization: ' . $token
],
'method' => 'POST',
'content' => json_encode($data)
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) {
echo "Erro ao enviar os dados";
} else {
$responseData = json_decode($result, true);
echo "Resposta da API: ";
print_r($responseData);
return $responseData;
}
}
// Chamando a função para enviar os dados
enviarDados($jsonData);
?>
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
public class Main {
// JSON de entrada com os clientes
static class Cliente {
String cliente;
double lat;
double longi;
Cliente(String cliente, double lat, double longi) {
this.cliente = cliente;
this.lat = lat;
this.long = longi;
}
}
static class JsonData {
List clientes = new ArrayList<>();
}
// Variáveis para armazenar a base (se existirem)
static Double latitudeBase = null; // Defina a latitude da base, se necessário
static Double longitudeBase = null; // Defina a longitude da base, se necessário
// Função para gerar o token (exemplo)
static String gerarToken() {
return "seu_token_aqui";
}
// Função para enviar os dados
static void enviarDados(JsonData data) {
String url = "https://iarotas.com.br/api/routerv1";
String token = gerarToken();
// Adiciona a base à lista de clientes antes do envio, se existir
if (latitudeBase != null && longitudeBase != null) {
data.clientes.add(0, new Cliente("BASE", latitudeBase, longitudeBase));
}
// Faz a requisição para a API
try {
URL apiUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) apiUrl.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", token);
conn.setDoOutput(true);
Gson gson = new Gson();
String jsonInputString = gson.toJson(data);
try (OutputStream os = conn.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
}
int responseCode = conn.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
System.out.println("Resposta da API: " + new String(conn.getInputStream().readAllBytes()));
} else {
System.out.println("Erro ao enviar os dados: " + responseCode);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// Oculta o indicador de carregamento (caso tenha implementado essa função)
}
}
public static void main(String[] args) {
JsonData jsonData = new JsonData();
jsonData.clientes.add(new Cliente("AAAA", -19.9269086, -43.9386425));
jsonData.clientes.add(new Cliente("AAAB", -19.7996, -44.018));
jsonData.clientes.add(new Cliente("AAAC", -19.7664, -44.0875));
enviarDados(jsonData);
}
}
// JSON de entrada com os clientes com a placa do veiculo
const jsonData = {
"clientes": [
{
"cliente": "AAAA",
"lat": -19.9269086,
"long": -43.9386425,
"placa": "Placa A"
},
{
"cliente": "AAAB",
"lat": -19.7996,
"long": -44.018,
"placa": "Placa B"
},
{
"cliente": "AAAC",
"lat": -19.7664,
"long": -44.0875,
"placa": "Placa C"
}
]
};
// Variáveis para armazenar a base (se existirem)
let latitudeBase = null; // Defina a latitude da base, se necessário
let longitudeBase = null; // Defina a longitude da base, se necessário
async function enviarDados(data) {
const url = 'https://iarotas.com.br/api/routerPlates';
const token = gerarToken(); // Supondo que essa função gera um token de autorização
try {
// Verifica se as coordenadas da base estão disponíveis
if (latitudeBase !== null && longitudeBase !== null) {
// Adiciona o cliente "BASE" no início do array de clientes
data.clientes.unshift({
cliente: "BASE",
lat: latitudeBase,
long: longitudeBase
});
}
// Faz a requisição POST para a API
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': token
},
body: JSON.stringify(data) // Converte os dados para JSON
});
// Verifica se a resposta da requisição foi bem-sucedida
if (!response.ok) {
throw new Error(`Erro na requisição: ${response.statusText}`);
}
// Converte a resposta para JSON
const responseData = await response.json();
// Retorna os dados da resposta
return responseData;
} catch (error) {
// Captura e trata qualquer erro que ocorra durante a requisição
console.error('Erro ao enviar dados:', error);
throw error; // Rejeita a promessa para que o erro possa ser tratado externamente
}
}
// Exemplo de uso
// enviarDados(jsonData);
import requests
import json
# JSON de entrada com os clientes com a placa do veiculo
json_data = {
"clientes": [
{
"cliente": "AAAA",
"lat": -19.9269086,
"long": -43.9386425,
"placa": "Placa A"
},
{
"cliente": "AAAB",
"lat": -19.7996,
"long": -44.018,
"placa": "Placa B"
},
{
"cliente": "AAAC",
"lat": -19.7664,
"long": -44.0875,
"placa": "Placa C"
}
]
}
# Variáveis para armazenar a base (se existirem)
latitude_base = None # Defina a latitude da base, se necessário
longitude_base = None # Defina a longitude da base, se necessário
def gerar_token():
# Supondo que essa função gera um token de autorização
return "seu_token_aqui"
def enviar_dados(data):
url = 'https://iarotas.com.br/api/routerPlates'
token = gerar_token()
try:
# Verifica se as coordenadas da base estão disponíveis
if latitude_base is not None and longitude_base is not None:
# Adiciona o cliente "BASE" no início do array de clientes
data["clientes"].insert(0, {
"cliente": "BASE",
"lat": latitude_base,
"long": longitude_base
})
# Faz a requisição POST para a API
response = requests.post(url, json=data, headers={
'Content-Type': 'application/json',
'Authorization': token
})
# Verifica se a resposta da requisição foi bem-sucedida
response.raise_for_status()
# Converte a resposta para JSON
response_data = response.json()
# Retorna os dados da resposta
return response_data
except requests.exceptions.RequestException as error:
# Captura e trata qualquer erro que ocorra durante a requisição
print('Erro ao enviar dados:', error)
raise error # Rejeita a exceção para que o erro possa ser tratado externamente
# Exemplo de uso
# enviar_dados(json_data)
<?php
// JSON de entrada com os clientes com a placa do veiculo
$jsonData = [
"clientes" => [
[
"cliente" => "AAAA",
"lat" => -19.9269086,
"long" => -43.9386425,
"placa" => "Placa A"
],
[
"cliente" => "AAAB",
"lat" => -19.7996,
"long" => -44.018,
"placa" => "Placa B"
],
[
"cliente" => "AAAC",
"lat" => -19.7664,
"long" => -44.0875,
"placa" => "Placa C"
]
]
];
// Variáveis para armazenar a base (se existirem)
$latitudeBase = null; // Defina a latitude da base, se necessário
$longitudeBase = null; // Defina a longitude da base, se necessário
function gerarToken() {
// Supondo que essa função gera um token de autorização
return "seu_token_aqui";
}
function enviarDados($data) {
$url = 'https://iarotas.com.br/api/routerPlates';
$token = gerarToken();
try {
// Verifica se as coordenadas da base estão disponíveis
global $latitudeBase, $longitudeBase;
if ($latitudeBase !== null && $longitudeBase !== null) {
// Adiciona o cliente "BASE" no início do array de clientes
array_unshift($data['clientes'], [
"cliente" => "BASE",
"lat" => $latitudeBase,
"long" => $longitudeBase
]);
}
// Faz a requisição POST para a API
$options = [
'http' => [
'header' => "Content-Type: application/json\r\nAuthorization: $token\r\n",
'method' => 'POST',
'content' => json_encode($data),
],
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
// Verifica se a resposta da requisição foi bem-sucedida
if ($response === FALSE) {
throw new Exception('Erro na requisição');
}
// Converte a resposta para JSON
$responseData = json_decode($response, true);
// Retorna os dados da resposta
return $responseData;
} catch (Exception $error) {
// Captura e trata qualquer erro que ocorra durante a requisição
echo 'Erro ao enviar dados: ' . $error->getMessage();
throw $error; // Rejeita a exceção para que o erro possa ser tratado externamente
}
}
// Exemplo de uso
// enviarDados($jsonData);
?>
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
public class Main {
// JSON de entrada com os clientes com a placa do veiculo
static class Cliente {
String cliente;
double lat;
double longi;
String placa;
Cliente(String cliente, double lat, double longi, String placa) {
this.cliente = cliente;
this.lat = lat;
this.longi = longi;
this.placa = placa;
}
}
static class JsonData {
List clientes = new ArrayList<>();
}
// Variáveis para armazenar a base (se existirem)
static Double latitudeBase = null; // Defina a latitude da base, se necessário
static Double longitudeBase = null; // Defina a longitude da base, se necessário
public static String gerarToken() {
// Supondo que essa função gera um token de autorização
return "seu_token_aqui";
}
public static String enviarDados(JsonData data) throws Exception {
String url = "https://iarotas.com.br/api/routerPlates";
String token = gerarToken();
try {
// Verifica se as coordenadas da base estão disponíveis
if (latitudeBase != null && longitudeBase != null) {
// Adiciona o cliente "BASE" no início do array de clientes
data.clientes.add(0, new Cliente("BASE", latitudeBase, longitudeBase, null));
}
// Converte os dados para JSON
Gson gson = new Gson();
String jsonInputString = gson.toJson(data);
// Faz a requisição POST para a API
HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", token);
conn.setDoOutput(true);
try (OutputStream os = conn.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
}
// Verifica se a resposta da requisição foi bem-sucedida
if (conn.getResponseCode() != 200) {
throw new RuntimeException("Erro na requisição: " + conn.getResponseMessage());
}
// Converte a resposta para JSON
try (java.util.Scanner scanner = new java.util.Scanner(conn.getInputStream(), "UTF-8")) {
String responseData = scanner.useDelimiter("\\A").next();
return responseData;
}
} catch (Exception error) {
// Captura e trata qualquer erro que ocorra durante a requisição
System.err.println("Erro ao enviar dados: " + error.getMessage());
throw error; // Rejeita a exceção para que o erro possa ser tratado externamente
}
}
public static void main(String[] args) throws Exception {
JsonData jsonData = new JsonData();
jsonData.clientes.add(new Cliente("AAAA", -19.9269086, -43.9386425, "Placa A"));
jsonData.clientes.add(new Cliente("AAAB", -19.7996, -44.018, "Placa B"));
jsonData.clientes.add(new Cliente("AAAC", -19.7664, -44.0875, "Placa C"));
// Exemplo de uso
// enviarDados(jsonData);
}
}
// JSON de entrada com os clientes com a placa do veiculo
const jsonData = {
"clientes": [
{
"cliente": "AAAA",
"nomeCliente": "PADARIA SOL NASCENTE LTDA",
"lat": -19.7996,
"long": -44.018
},
{
"cliente": "AAAB",
"nomeCliente": "PADARIA DO CAMPO LTDA",
"lat": -19.7589369,
"long": -43.9941235
},
{
"cliente": "AAAC",
"nomeCliente": "PADARIA ESTRELA DA MANHÃ LTDA",
"lat": -19.8200142,
"long": -43.9605643
}
],
"veiculos": [
{
"placa": "PLACA1",
"capacidade": "100"
},
{
"placa": "PLACA2",
"capacidade": "600"
},
{
"placa": "PLACA3",
"capacidade": "300"
}
],
"pedidos": [
{
"cliente": "AAAA",
"peso": "100.000"
},
{
"cliente": "AAAB",
"peso": "600.000"
},
{
"cliente": "AAAC",
"peso": "300.000"
}
]
};
// Variáveis para armazenar a base (se existirem)
let latitudeBase = null; // Defina a latitude da base, se necessário
let longitudeBase = null; // Defina a longitude da base, se necessário
async function enviarDados(data) {
const url = 'https://iarotas.com.br/api/routerAndDistribute';
const token = gerarToken(); // Supondo que essa função gera um token de autorização
try {
// Verifica se as coordenadas da base estão disponíveis
if (latitudeBase !== null && longitudeBase !== null) {
// Adiciona o cliente "BASE" no início do array de clientes
data.clientes.unshift({
cliente: "BASE",
lat: latitudeBase,
long: longitudeBase
});
}
// Faz a requisição POST para a API
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': token
},
body: JSON.stringify(data) // Converte os dados para JSON
});
// Verifica se a resposta da requisição foi bem-sucedida
if (!response.ok) {
throw new Error(`Erro na requisição: ${response.statusText}`);
}
// Converte a resposta para JSON
const responseData = await response.json();
// Retorna os dados da resposta
return responseData;
} catch (error) {
// Captura e trata qualquer erro que ocorra durante a requisição
console.error('Erro ao enviar dados:', error);
throw error; // Rejeita a promessa para que o erro possa ser tratado externamente
}
}
// Exemplo de uso
// enviarDados(jsonData);
import json
import requests
# JSON de entrada com os clientes com a placa do veiculo
json_data = {
"clientes": [
{
"cliente": "AAAA",
"nomeCliente": "PADARIA SOL NASCENTE LTDA",
"lat": -19.7996,
"long": -44.018
},
{
"cliente": "AAAB",
"nomeCliente": "PADARIA DO CAMPO LTDA",
"lat": -19.7589369,
"long": -43.9941235
},
{
"cliente": "AAAC",
"nomeCliente": "PADARIA ESTRELA DA MANHÃ LTDA",
"lat": -19.8200142,
"long": -43.9605643
}
],
"veiculos": [
{
"placa": "PLACA1",
"capacidade": "100"
},
{
"placa": "PLACA2",
"capacidade": "600"
},
{
"placa": "PLACA3",
"capacidade": "300"
}
],
"pedidos": [
{
"cliente": "AAAA",
"peso": "100.000"
},
{
"cliente": "AAAB",
"peso": "600.000"
},
{
"cliente": "AAAC",
"peso": "300.000"
}
]
}
# Variáveis para armazenar a base (se existirem)
latitude_base = None # Defina a latitude da base, se necessário
longitude_base = None # Defina a longitude da base, se necessário
def gerar_token():
# Supondo que essa função gera um token de autorização
return "seu_token_aqui"
def enviar_dados(data):
url = 'https://iarotas.com.br/api/routerAndDistribute'
token = gerar_token()
try:
# Verifica se as coordenadas da base estão disponíveis
if latitude_base is not None and longitude_base is not None:
# Adiciona o cliente "BASE" no início do array de clientes
data["clientes"].insert(0, {
"cliente": "BASE",
"lat": latitude_base,
"long": longitude_base
})
# Faz a requisição POST para a API
response = requests.post(
url,
headers={
'Content-Type': 'application/json',
'Authorization': token
},
data=json.dumps(data) # Converte os dados para JSON
)
# Verifica se a resposta da requisição foi bem-sucedida
response.raise_for_status()
# Converte a resposta para JSON
response_data = response.json()
# Retorna os dados da resposta
return response_data
except requests.exceptions.RequestException as error:
# Captura e trata qualquer erro que ocorra durante a requisição
print(f'Erro ao enviar dados: {error}')
raise # Rejeita a exceção para que o erro possa ser tratado externamente
# Exemplo de uso
# enviar_dados(json_data)
<?php
// JSON de entrada com os clientes com a placa do veiculo
$jsonData = [
"clientes" => [
[
"cliente" => "AAAA",
"nomeCliente" => "PADARIA SOL NASCENTE LTDA",
"lat" => -19.7996,
"long" => -44.018
],
[
"cliente" => "AAAB",
"nomeCliente" => "PADARIA DO CAMPO LTDA",
"lat" => -19.7589369,
"long" => -43.9941235
],
[
"cliente" => "AAAC",
"nomeCliente" => "PADARIA ESTRELA DA MANHÃ LTDA",
"lat" => -19.8200142,
"long" => -43.9605643
]
],
"veiculos" => [
[
"placa" => "PLACA1",
"capacidade" => "100"
],
[
"placa" => "PLACA2",
"capacidade" => "600"
],
[
"placa" => "PLACA3",
"capacidade" => "300"
]
],
"pedidos" => [
[
"cliente" => "AAAA",
"peso" => "100.000"
],
[
"cliente" => "AAAB",
"peso" => "600.000"
],
[
"cliente" => "AAAC",
"peso" => "300.000"
]
]
];
// Variáveis para armazenar a base (se existirem)
$latitudeBase = null; // Defina a latitude da base, se necessário
$longitudeBase = null; // Defina a longitude da base, se necessário
function gerarToken() {
// Supondo que essa função gera um token de autorização
return "seu_token_aqui";
}
function enviarDados($data) {
$url = 'https://iarotas.com.br/api/routerAndDistribute';
$token = gerarToken();
try {
// Verifica se as coordenadas da base estão disponíveis
if ($latitudeBase !== null && $longitudeBase !== null) {
// Adiciona o cliente "BASE" no início do array de clientes
array_unshift($data["clientes"], [
"cliente" => "BASE",
"lat" => $latitudeBase,
"long" => $longitudeBase
]);
}
// Faz a requisição POST para a API
$options = [
'http' => [
'header' => "Content-Type: application/json\r\nAuthorization: $token\r\n",
'method' => 'POST',
'content' => json_encode($data),
],
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
// Verifica se a resposta da requisição foi bem-sucedida
if ($response === FALSE) {
throw new Exception("Erro na requisição");
}
// Converte a resposta para JSON
$responseData = json_decode($response, true);
// Retorna os dados da resposta
return $responseData;
} catch (Exception $error) {
// Captura e trata qualquer erro que ocorra durante a requisição
echo 'Erro ao enviar dados: ' . $error->getMessage();
throw $error; // Rejeita a exceção para que o erro possa ser tratado externamente
}
}
// Exemplo de uso
// enviarDados($jsonData);
?>
import com.google.gson.Gson;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
// JSON de entrada com os clientes com a placa do veiculo
static String jsonData = """
{
"clientes": [
{
"cliente": "AAAA",
"nomeCliente": "PADARIA SOL NASCENTE LTDA",
"lat": -19.7996,
"long": -44.018
},
{
"cliente": "AAAB",
"nomeCliente": "PADARIA DO CAMPO LTDA",
"lat": -19.7589369,
"long": -43.9941235
},
{
"cliente": "AAAC",
"nomeCliente": "PADARIA ESTRELA DA MANHÃ LTDA",
"lat": -19.8200142,
"long": -43.9605643
}
],
"veiculos": [
{
"placa": "PLACA1",
"capacidade": "100"
},
{
"placa": "PLACA2",
"capacidade": "600"
},
{
"placa": "PLACA3",
"capacidade": "300"
}
],
"pedidos": [
{
"cliente": "AAAA",
"peso": "100.000"
},
{
"cliente": "AAAB",
"peso": "600.000"
},
{
"cliente": "AAAC",
"peso": "300.000"
}
]
}
""";
// Variáveis para armazenar a base (se existirem)
static Double latitudeBase = null; // Defina a latitude da base, se necessário
static Double longitudeBase = null; // Defina a longitude da base, se necessário
static String gerarToken() {
// Supondo que essa função gera um token de autorização
return "seu_token_aqui";
}
static String enviarDados(String data) throws IOException, InterruptedException {
String url = "https://iarotas.com.br/api/routerAndDistribute";
String token = gerarToken();
try {
Gson gson = new Gson();
var jsonObject = gson.fromJson(data, java.util.Map.class);
// Verifica se as coordenadas da base estão disponíveis
if (latitudeBase != null && longitudeBase != null) {
// Adiciona o cliente "BASE" no início do array de clientes
var clientes = (java.util.List) jsonObject.get("clientes");
clientes.add(0, java.util.Map.of(
"cliente", "BASE",
"lat", latitudeBase,
"long", longitudeBase
));
}
// Faz a requisição POST para a API
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/json")
.header("Authorization", token)
.POST(HttpRequest.BodyPublishers.ofString(data))
.build();
HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
// Verifica se a resposta da requisição foi bem-sucedida
if (response.statusCode() != 200) {
throw new IOException("Erro na requisição: " + response.statusCode());
}
// Retorna os dados da resposta
return response.body();
} catch (IOException | InterruptedException error) {
// Captura e trata qualquer erro que ocorra durante a requisição
System.err.println("Erro ao enviar dados: " + error.getMessage());
throw error; // Rejeita a exceção para que o erro possa ser tratado externamente
}
}
public static void main(String[] args) throws IOException, InterruptedException {
// Exemplo de uso
// enviarDados(jsonData);
}
}
Este é um exemplo de código HTML e JavaScript para o Roteirizador Simples:
Mapa de Rotas
Carregando, por favor aguarde...
Este é um exemplo de código HTML e JavaScript para a Roteirização com Veículos:
Mapa de Rotas
Carregando, por favor aguarde...
Este é um exemplo de código HTML e JavaScript para a Roteirização com Divisão de Carga:
Mapa de Rotas
Carregando, por favor aguarde...