Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite pessoal!
Passei o dia hoje tentando gerar um array bidimensional dinamicamente e não to conseguindo, já testei de diversas formas mas sempre o mesmo resultado.
Na verdade quero adicionar pontos a um mapa (google maps) ai preciso preencher um array com descrição, latitude e longitude.
Se eu colocar ele estaitco, funciona. abaixo o exemplo:
[
['joao', -27.1473854, -48.5860981],
['pedro', -27.1473792, -48.5860866],
['jose', -27.1474019, -48.586126],
['lucas', -27.1473818, -48.5860942]
];
porém quando gero via codigo da sempre o erro undefined, ao conferir o resultado no console, parece igual ao estatico mas nao funciona.
Alguém pode me dar uma ajuda?
abaixo meu código:
function carregaPontos() {
var pontos = [];
$.ajax({
method: "GET",
url: "/mapa/pontosMapa/listar",
success: function(response) {
if (response.length > 0) {
let rows = response.length;
let columns = 3;
// creating two-dimensional array
for (let i = 0; i < rows; i++) {
pontos[i] = [];
for (let j = 0; j < columns; j++) {
if (j === 0) {
pontos[i][j] = response[i].operador;
} else if (j === 1) {
pontos[i][j] = parseFloat(response[i].latitude);
} else if (j === 2) {
pontos[i][j] = parseFloat(response[i].longitude);
}
}
}
console.log(pontos);
return pontos;
}
},
error: function(jqXHR) {
alert('Erro ' + jqXHR.status + " Não foi possível carregar os pontos!");
}
})
}Isso daí é bem difícil, eu também não estou conseguindo.
Mudei o url para
url: "listar.php",
e criei um arquivo listar.php com isso
['joao', -27.1473854, -48.5860981]
o comando response.length devolve todo o tamanho da string, quando acredito que o ideal era contar os arrays que contém o response. Para o JavaScript entender que o response é um conjunto de array, tentei usar a função response=response.split(",").
Mas o grande abacaxi é a montagem do array. Lá tem coisa do tipo
response[i].operador;
ou seja, o response é tratado como se fosse um json e não um array. Eu fiquei perdido, espero que você tenha mais sorte.Consegui fazer o código funcionar, criei dois arquivos no mesmo diretório:
listar.json
[{"operador":"joao", "latitude":-27.1473854, "longitude":-48.5860981},
{"operador":"pedro", "latitude":-27.1473792, "longitude":-48.5860866},
{"operador":"jose", "latitude":-27.1474019,"longitude":-48.586126},
{"operador":"lucas", "latitude":-27.1473818, "longitude":-48.5860942}]
astudy.html
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
<script>
function carregaPontos() {
var pontos = [];
$.ajax({
method: "GET",
url: "listar.json",
dataType:'json',
success: function(response) {
if (response.length > 0) {
let rows = response.length;
let columns = 3; console.log(rows)
// creating two-dimensional array
for (let i = 0; i < rows; i++) {
pontos[i] = [];
for (let j = 0; j < columns; j++) {
if (j === 0) {
pontos[i][j] = response[i].operador;
} else if (j === 1) {
pontos[i][j] = parseFloat(response[i].latitude);
} else if (j === 2) {
pontos[i][j] = parseFloat(response[i].longitude);}}}
console.log(pontos);
return pontos;} },
error: function(jqXHR) {
alert('Erro ' + jqXHR.status +
" Não foi possível carregar os pontos!");}})}
</script>
<body onload=carregaPontos()>
Só alterei a URL e acrescentei o dataType.
O ideal é que você faça isso e nos poste o resultado no console: