Ir para conteúdo

Recommended Posts

Bom dia, não tenho muita prática com JavaScript (tive contato apenas durante um período no CEDERJ). Ocorre que agora preciso do bendito, e não estou conseguindo sair de uma situação. Vou postar o código:

<script language="JavaScript">
  
	coordenadas = ""; //Defini essa variável segundo meus conhecimentos, por ter omitido a palavra 'var' ela é global

	function sucesso(posicao) {				
		coordenadas = posicao.coords.latitude;
		//document.write(coordenadas); //Aqui dentro ela escreve o valor da latitude
	}
		
	if('geolocation' in navigator) {		
		navigator.geolocation.getCurrentPosition(sucesso);				
	} 
	else {
		alert("Navegador incompatível com esse recurso");
	}
			
	document.write(coordenadas); //Aqui eu NÃO consigo pegar o valor
</script>

Basicamente eu quero salvar os valores de Latitude, Longitude e Timestamp em variáveis para poder usa-las posteriormente. Conto com a vossa ajuda. 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

const getCoords = async () => {
  if('geolocation' in navigator) {
    const pos = await new Promise((resolve, reject) => {
      navigator.geolocation.getCurrentPosition(resolve, reject);
    });
    
    return {
      long: pos.coords.longitude,
      lat: pos.coords.latitude,
    };
  } 
  else {
    alert("Navegador incompatível com esse recurso");
  }
};

const coords = getCoords().then((data, error) => {
  console.log(data);
});

OU

 

var coordenadas = ""; //Defini essa variável segundo meus conhecimentos, por ter omitido a palavra 'var' ela é global

const getCoords = async () => {
  if('geolocation' in navigator) {
    const pos = await new Promise((resolve, reject) => {
      navigator.geolocation.getCurrentPosition(resolve, reject);
    });
    
    return {
      long: pos.coords.longitude,
      lat: pos.coords.latitude,
    };
  } 
  else {
    alert("Navegador incompatível com esse recurso");
  }
};

async function initialize() {
  coordenadas = await getCoords();
  
  console.log('Init:Coord: ', coordenadas);
  manipulaCoord(coordenadas);
}

function manipulaCoord(coord) {
  console.log('manipulaCord:', coord, coordenadas);
}

initialize(); 



 

Compartilhar este post


Link para o post
Compartilhar em outros sites

wanderval gostaria de agradecer sua ajuda, mas reforço que não tenho muita experiência com JavaScript. 

 

Você poderia por favor me dizer como recuperar esses valores gravados no console, pelas pesquisas que fiz não há como. E caso não haja maneira, como eu posso gravar as coordenadas numa variável? Vou precisar dessas informações em outra parte do script.

 

Se você testou o código que eu postei, deve ter percebido que a variável apesar de ser global não estava refletindo as coordenadas.

PS.: eu havia tentado também enviar esses dados através do "return" também sem sucesso.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema que você está tendo e que está tratando o getLocation como um código syncrono mas ele é asyncrono, isso quer dizer que a sua logica nao vai seguir uma ordem de execução por linha, por esse motivo seu document.write mostra undefined ele executa primeiro que a função.

Resumindo mesmo que você check o valor no metodo de "sucesso" e naquele momento que existe o valor, mas seu write na ultima linha executou antes disso então nunca terá o valor, seu conceito de variavel global pode ser feito mas precisa executar somente apos o valor for retornado, se você testar o codigo que coloquei a variavel se manteve mas so chamei o metodo apos o valor ser retornado 'simples coloque os console.log e vai ver a ordem que está ocorrendo a execução.

 

No caso do seu problema apenas utilize o restante da sua logica em metodos assim chamara apenas quando o valor for retornado, viu que coloquei um metodo chamado "manipulaCoord", ele está imprimindo 2 variáveis a que esta sendo enviada por parametro e a variavel de scopo global "coordenadas"

 

function manipulaCoord(coord) {
  console.log('manipulaCord:', coord, coordenadas);
}

 

 

coordenadas = ""; //Defini essa variável segundo meus conhecimentos, por ter omitido a palavra 'var' ela é global

function getCurrentLocation(callback) {
  if(!navigator.geolocation) return;
  navigator.geolocation.getCurrentPosition(function(position) {
    var currLocation = { lat: position.coords.latitude, long: position.coords.longitude };
    callback(currLocation);
  });
}

getCurrentLocation(function(currLocMap){
  coordenadas = currLocMap;
  console.log('valor aqui', coordenadas);
  
  // chama o metodo para executar o restante do código
  algumMetodo();
});



function algumMetodo() {
  console.log('algumMetodo: ', coordenadas);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Millena Oliveira
      Oiii gente, boa noite. Estou estudando ainda e me deram um desafio para desenvolver um programa que imprimisse na tela somente os números primos segundo o valor que o usuário colocasse na execução. Utilizei o readLine para isso. Usei um objeto para que repetisse a execução e salvei todos os números numa array. O problema é, quando faço o teste colocando um número qualquer, retorna uma array vazia. Poderia me dar uma ajuda? Segue abaixo todo o código.
      Obrigada :)
       
      var readline = require("readline"); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); function desafioPrimos() { var primos = []; rl.question("Digite um número: ", function (num) { console.log(primos); numero = parseInt(num); numerosPrimos: for (var x = 2; x <= num; x++) { for (var y = 2; y < x; y++) { if (x % y === 0) continue numerosPrimos; }; primos.push(x); rl.close(); }; }); }; desafioPrimos();  
    • Por reberthkss
      Bom dia!
       
      Eu tenho um programa escrito em C e nele estou utilizando funções, e para ter boa prática, eu quero separar as funções do programa principal.
      Então to querendo criar uma header e outro arquivo .c para colocar as funções. Ai eu fico com:
       
      Arquivo .h "Funcoes.h"; Arquivo .c "Funcoes.c" Arquivo .c "main.c"  
      Eu tentei fazer o esquema acima, mas quando compilo o arquivo main.c o compilador me retorna um erro (Anexo I);
       
       

      Na minha opinião era pra dar certo, pois fiz igual um exemplo que eu tenho aqui (o exemplo tá em c++)...
       
      o que eu to deixando passar pra não ter dado certo?
      // FUNCOES.H #pragma once #include <stdio.h> #include <math.h> extern int assentoC[23]; extern int assentoJ[23]; extern float valort; void limpavetor(int *v1,int*v2); //FUNCOES.C #include "funcoes.h" void limparvetor(int *v1,int *v2){ int i; for(i=0;i<23;i++){ *(v1+i)=0; *(v2+i)=0; } } //MAIN.C #include<stdio.h> #include<math.h> #include <string.h> #include "funcoes.h" int assentoC[23]; int assentoJ[23]; float valort=0; char* verStatusAss(int *assento) {if(*assento>0) return "OCUPADO"; else return "DISPONIVEL"; } void comprar() { int i; int opt=0; int qt=0; int ass[23]; int confirma=0; int menu=0; int contDJ=1; int contDC=1; int destino=0; int cont=0; float valor1=28.0,valor2=159.0,valor3=188.0; printf("\t\t MENU\n"); printf("Destino: [1] Sao Paulo [2] Curitiba [3] Florianopolis: "); scanf("%i",&destino); printf("\n"); printf("voce quer comprar assentos em/ou: \n\n"); for(i=0;i<23;i++){ if(assentoC[i]==0){ contDC=0; } } for(i=0;i<23;i++){ if(assentoJ[i]==0){ contDJ=0; } } printf("ASSENTO DISPONIVEIS EM\n"); if(contDJ==0) printf("\n1 - Janela\n\n"); if(contDC==0) printf("2 - Corredor\n"); printf("\n\n\n3 - Voltar para menu principal\n"); scanf("%i",&opt); switch(opt){ case 1: printf("[JANELA] Quantos assentos?:"); scanf("%i",&qt); printf("\n"); printf("[JANELA] Qual/Quais assento?: "); for(i=0;i<qt;i++){ cont=0; while(cont<1){ printf("[JANELA] Bilhete: %i. Assento: ",i+1); scanf("%i",&ass[i]); printf("\n"); if(assentoJ[ass[i]]!=0){ printf("Assento OCUPADO. Escolha outro assento! "); }else { cont++; } } } printf("\t\t RESUMO\n"); printf("Posicao: JANELA \n"); for(i=0;i<qt;i++){ printf("Bilhete: %i.\t Assento: %i\n",i+1,ass[i]); } printf("CONFIRMA?? "); printf("[1] SIM [0] NAO:"); scanf("%i",&confirma); if(confirma!=0){ for(i=0;i<qt;i++) { assentoJ[ass[i]]=1; switch(destino) { case 1: valort=valort+(qt*valor1); break; case 2: valort=valort+(qt*valor2); break; case 3: valort=valort+(qt*valor3); break; } } } else { printf("VENDA NAO EFETUADA! VOLTANDO AO MENU PRINCIPAL..."); } break; case 2: printf("[CORREDOR] Quantos assentos?:"); scanf("%i",&qt); printf("\n"); printf("[CORREDOR] Qual/Quais assento?: "); for(i=0;i<qt;i++){ printf("[CORREDOR] Bilhete: %i. Assento: ",i+1); scanf("%i",&ass[i]); printf("\n"); } printf("\t\t RESUMO\n"); printf("Posicao: CORREDOR \n"); for(i=0;i<qt;i++){ printf("Bilhete: %i.\t Assento: %i\n",i+1,ass[i]); } printf("CONFIRMA?? "); printf("[1] SIM [0] NAO:"); scanf("%i",&confirma); if(confirma!=0){ for(i=0;i<qt;i++) { assentoJ[ass[i]]=1; } } else { printf("VENDA NAO EFETUADA! VOLTANDO AO MENU PRINCIPAL..."); } break; case 3: break; } } int menuprincipal() { int opt=0; printf("\t\t MENU PRINCIPAL\n\n"); printf("\t\t 1 - COMPRAR ASSENTO\n"); printf("\t\t 2 - VERIFICAR ASSENTOS\n"); printf("\t\t 3 - VER MAPA DO TRAJETO\n"); printf("\t\t 4 - VER LUCRO\n"); printf("\t\t 5 - SAIR\n"); printf("\t\t Digite uma opcao: "); scanf("%i",&opt); return opt; } int menusecundario() { int opt=0; printf("1 - COMPRAR ASSENTO // "); printf("2 - VERIFICAR ASSENTOS \n"); printf("3 - VER MAPA DO TRAJETO // "); printf("4 - VER LUCRO // "); printf("5 - VOLTAR PARA MENU PRINCIPAL\n"); printf("6 - SAIR \n"); printf("Digite uma opcao: "); scanf("%i",&opt); return opt; } void verAss() { int i; int opt=0; printf("\t\t MENU\n"); printf("voce quer ver assentos em/ou: \n"); printf("1 - Janela\n"); printf("2 - Corredor\n"); printf("3 - Todos\n"); printf("Digite uma opcao: "); scanf("%i",&opt); printf("\n"); for(i=0;i<23;i++) { switch(opt){ case 1: printf("[JANELA] Assento %i. STATUS: %s \n",i, verStatusAss(&assentoJ[i])); break; case 2: printf("[CORREDOR] Assento %i. STATUS: %s \n",i,verStatusAss(&assentoC[i])); break; case 3: printf("[JANELA] Assento %i. STATUS: %s \t [CORREDOR] Assento %i. STATUS: %s\n",i,verStatusAss(&assentoJ[i]),i,verStatusAss(&assentoC[i])); break; } } } int voltarMenuP(int *menu) { int menu2; printf("APERTE QUALQUER TECLA PARA VOLTAR AO MENU PRINCIPAL"); scanf("%i",&menu2); if(menu2!=0) *menu=1; return menu; } int acao(int opt,int * gameover) { int menu=0; while(!menu){ switch(opt){ case 1: comprar(); voltarMenuP(&menu); break; // VERIFICAR ASSENTOS case 2: verAss(); voltarMenuP(&menu); break; // verMap() case 3: printf("\t\t\MAPA\n"); printf("SJC\t->\t Sao Paulo\t->\t Curitiba\t->\t Florianopolis\n"); voltarMenuP(&menu); break; // verLuc() case 4: printf("Valor total: %.2f\n",valort); voltarMenuP(&menu); break; // exit() case 5: *gameover=1; return *gameover; break; } } } int main(){ int gameover=0; int opt; int i=0; limparvetor(&assentoC,&assentoJ); while(!gameover){ // MENU PRINCIPAL // -- func menuprincipal() acao(opt=menuprincipal(),&gameover); } return 0; }  
    • Por edvaldo joviano de paula
      Prezados, boa tarde!
      Preciso de uma ajuda sendo possível:
       
      Tenho o seguinte cenário em uma consulta ( formação de kits de produtos tendo como produto principal um valor igual, ex: produto 1 é formado pelos produtos 2 e 3)
      select codkit, produtos from kit where codkit = 1
      ---   ----
      1    2
      1    3
      Percebem que o resultado traz o codigo do kit (1) e os produtos que compoem este kit (2,3), porem o produto 2 tambem faz parte do kit 4 junto com o produto 10 e produto 3 faz parte do kit 5 junto com o produto 11 sendo:
      kit 1 (2,3)
      kit 4 (2,10)
      kit 5 (3,11).
       
      Eu preciso de uma ajuda sobre alguma função que ao comprar os produtos 2 e 3 e estes estando na mesma nota fiscal (select produtos from notafiscal = x) traga o resultado do kit que estes dois produtos juntos formam, exemplo, ao pesquisar (select produtos from notafiscal = x) nesta nota existir os produtos 2 e 3 traga o resultado 1, se na nota existir os produtos 2 e 10 traga o resultado 4 e se existir na consulta dos itens da nota os itens 3 e 11 o resultado seja 5. Caso na pesquisa eventualmente existir por exemplo 10 unidades do item 2, 5 unidades do item 3 e 5 unidades do item 10, o resultado deve ser 1 e 4 pois 5 unidades do 2+5 unidades do 3 forma o kit 1 e 5 unidades do 2+ 5 unidades do 10 formam o kit 4.
       
      Espero ter explicado de forma a ser entendido e agradeço a ajuda.
       
    • Por Diogo Dall'Orto
      Ola pessoal boa tarde.
      Por  gentileza preciso da vossa ajuda.
       
      O programa para verificar o maior,  menor e seus respectivos índices eu consegui fazer conforme podem observar no código e saída abaixo, o problema esta quando tenho que implementa-lo na função.
       
      #Escreva um programa em Python com uma função que recebe por parâmetro uma lista de números inteiros e retorna o índice em que se encontra o maior elemento da lista.
      #Escreva um programa em Python com uma função que recebe por parâmetro uma lista de números inteiros e retorna o índice em que se encontra o menor elemento da lista.
       
      Estou a uma semana agarrado nisso! Help please!
       
      # Criar um programa em python que cria # uma lista com 10 elementos. Após isso # implementar o algoritmo para verificar e # exibir o maior elemento do vetor lista = list() for i in range(1, 11): lista.append(int(input(f'{i} - Digite um valor: '))) pos = maior = menor = indice = indicemai = indicemen = 0 while pos < len(lista): if pos == 0: maior = menor = lista[pos] indice = pos else: if lista[pos] > maior: maior = lista[pos] indicemai = pos pos += 1 while pos < len(lista): if pos == 0: menor = maior = lista[pos] indice = pos else: if lista[pos] < menor: menor = lista[pos] indicemen = pos pos += 1 print() print(f'Maior valor na lista esta é {maior}, e esta na posicao [{indicemai}] ') print(f'Menor valor na lista esta é {menor}, e esta na posicao [{indicemen}]') "D:\Python\Projetos Pycharm\venv\Scripts\python.exe" "D:/_____Impacta_____/Python/Projetos Pycharm/MaiorValorNoVetor.py" 1 - Digite um valor: 34 2 - Digite um valor: 54 3 - Digite um valor: 65 4 - Digite um valor: 76 5 - Digite um valor: 87 6 - Digite um valor: 34 7 - Digite um valor: 54 8 - Digite um valor: 23 9 - Digite um valor: 54 10 - Digite um valor: 45 Maior valor na lista esta é 87, e esta na posicao [4] Menor valor na lista esta é 34, e esta na posicao [0] Process finished with exit code 0  
       
    • Por LucasOficial
      Me foi passado um trabalho de faculdade que consiste em:
      imagine um vetor inicialmente vazio com capacidade CAP.
      cria um programa que através de um menu permita o usuário
      inserir um novo numero
      remover um valor
      remover o elemento de uma determinada posição
      alteração de um valor por outro
      buscar determinado valor e dizer sua posição (caso exista)
      exibição de todos os elementos do vetor
       
      quero algumas ideias de como começar, quais funções, variáveis usar. sou bastante leigo nesse assunto.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.