Jump to content

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.

Share this post


Link to post
Share on other 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(); 



 

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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);
}

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By 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();  
    • By 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.
       
    • By 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  
       
    • By 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.
    • By Charles Ramos
      Bom dia, estou com uma dificuldade em um algoritmo para um jogo da forca em VisuALG, o algoritmo foi solicitado para um trabalho e um dos requisitos é que ele tenha uma função, como vocês podem ver foi colocado uma função, porém a professora disse que aquela função não retorna nenhum valor, e por isso ela se encaixa como procedimento, pesquisei, tentei e não conseguir encaixar uma função nesse algorítimo, queria acrescentar também a cada final de rodada a opção de jogar ou não novamente.
      desde já agradeço a ajuda. 
       
      abaixo segue o Algorítimo - obs o visuALG utilizado foi o 2.0
       
      algoritmo "Jogo da forca"
      var
      op,frutas,ne,na:inteiro //op: opçao, ne: numero erro, na:numero de acertos
      l1,l2,l3,l4,l5,l6,l7,ld1,ld2,ld3,ld4,ld5,ld6,ld7,dig,verifica:caracter //linhas(l1,l2,l3...) serão usadas para o aleatorio, já as ld (ld1, ld2, ld3) serão usadas para verificar o acerto
      V,D:Caracter
      funcao Derrota () :caracter
      inicio
                        Escreval("============================================================")
                        escreval("============================================================")
                        escreval
                        escreval(" --------- FIM  DE JOGO! ------- ")
                        ESCREVAL
                        ESCREVAL(" --------- GAME OVER =( ------- ")
                        ESCREVAL
                        Escreval("============================================================")
                        escreval("============================================================")
      fimfuncao
      funcao   vitoria () : caracter
      inicio

                        limpatela
                        Escreval("============================================================")
                        escreval("============================================================")
                        escreval
                        escreval(" PARABÊNS VOCE VENCEU!  ")
                        ESCREVAL
                        Escreval("============================================================")
                        escreval("============================================================")
                        fimfuncao
      inicio
      aleatorio on  // ativa o modo aleatorio fonte, palavra on é opcional
      aleatorio 1,7 // seleciona o ranger do aleatorio, é preciso definir para o comando ter as opção para escolha
      leia (frutas) // todo leia vai ser lançado um numero aleatorio nesse caso de 1 a 3
      aleatorio off  // desativa o modo aleatorio, assim ele escolher uma das opções das palavras.
      limpatela  // limpa tela
      repita // (repita 1) repitir o comando ate achar o comando interrompa
      escreval("---SEJA BEM VINDO---")
      escreval
      escreval(" ---JOGO DA FORCA--- ")
      escreval("Autores: Charles Ramos, Pedro Duca, Richard Vepo")
      escreval
      escreval
      escreval("Digite 1 para jogar e 0 para sair")
      leia(op)
      escolha op // verificar qual opção foi selecionada
             caso 0 //sair
                  escreva("você escolheu a opção 0 para sair")
                  escreval
                  escreval
                  fimalgoritmo  // encerrar o algoritmo
             caso 1
                  interrompa  // para o loop de escolher opção
             outrocaso   // caso digite algo diferente de 0 ou 1 ele vai limpar a tela
             limpatela   // limpa a tela, e vai voltar para o loop de opção.
      fimescolha
      fimrepita// fim repita 1
      escolha frutas // palava que vai ser escolhida automaticamente pelo aleatorio no inicio do código em aleatorio on
              caso 1
                   l1 <- "d"
                   l2 <- "a"
                   l3 <- "m"
                   l4 <- "a"
                   l5 <- "s"
                   l6 <- "c"
                   l7 <- "o"
              caso 2
                   l1 <- "a"
                   l2 <- "b"
                   l3 <- "a"
                   l4 <- "c"
                   l5 <- "a"
                   l6 <- "x"
                   l7 <- "i"
              caso 3
                   l1 <- "a"
                   l2 <- "b"
                   l3 <- "a"
                   l4 <- "c"
                   l5 <- "a"
                   l6 <- "t"
                   l7 <- "e"
              caso 4
                   l1 <- "a"
                   l2 <- "c"
                   l3 <- "e"
                   l4 <- "r"
                   l5 <- "o"
                   l6 <- "l"
                   l7 <- "a"
              caso 5
                   l1 <- "l"
                   l2 <- "a"
                   l3 <- "r"
                   l4 <- "a"
                   l5 <- "n"
                   l6 <- "j"
                   l7 <- "a"
              caso 6
                   l1 <- "p"
                   l2 <- "e"
                   l3 <- "s"
                   l4 <- "s"
                   l5 <- "e"
                   l6 <- "g"
                   l7 <- "o"
              caso 7
                   l1 <- "g"
                   l2 <- "u"
                   l3 <- "a"
                   l4 <- "r"
                   l5 <- "a"
                   l6 <- "n"
                   l7 <- "a"
      fimescolha

      ld1 <- "_"           // LINHAS USADAS PARA ESCREVER
      ld2 <- "_"
      ld3 <- "_"
      ld4 <- "_"
      ld5 <- "_"
      ld6 <- "_"
      ld7 <- "_"

               // inicio do jogo
                repita //repita2
                       se (ne > 7) entao  // Se número de erros for maior que 6 que é o tamanho das palavras logo, jogador perde, ou seja, jogador possui 6 chances apenas.
                         D<- Derrota
                        FIMALGORITMO
                       fimse

                       se (ld1 <> "_") e (ld2 <> "_") e (ld3 <> "_") e (ld4 <> "_") e (ld5 <> "_") e (ld6 <> "_") e (ld7 <> "_") entao // Se as linhas forem diferentes de _ significa que existe letra no local,
                         V<- Vitoria
                        FIMALGORITMO
                        fimse

                limpatela
                Escreval("============================================================")
                escreval("============================================================")
                escreval("")
                escreval("    /-----|")
                escreval("   /      |")
                se (ne > 0 ) entao
                   escreval("  /     (x.x)")
                senao
                   escreval("  /")
                fimse
                se (ne > 1 ) entao
                     escreval(" |      __||__  ")
                senao
                     escreval(" |   ")
                fimse
                se (ne > 2 ) entao
                   escreval(" |     /|     |\\")
                senao
                   escreval(" |   ")
                fimse
                se (ne > 3) entao
                   escreval(" |   /  |_____| \\")
                senao
                     escreval(" |   ")
                fimse
                se (ne > 4) entao
                   escreval(" |       ||  ||")
                senao
                     escreval(" |      ")
                fimse
                se (ne > 5) entao
                   escreval(" |      _|| _||")
                senao
                   escreval(" |     ")
                fimse
                se (ne > 6) entao
                   escreval(" |     |__||__|")
                   escreval("=====                ULTIMA CHANCE! ")
                senao
                     escreval(" |    ")
                   escreval("=====               ")
                fimse
      escreval("")
      escreval("Acertos: ",na)
      escreval("Erros: ",ne)
      escreval("")
      escreva("Palavra com 7 letras:     ",ld1," ",ld2," ",ld3," ",ld4," ",ld5," ",ld6," ",ld7)
      Escreval("")
      escreval("Dica da palavra: FRUTA ")
      escreval
      escreva("digite uma letra: ")
      leia(dig)

      verifica <- "0"
      se (l1 = dig) e (ld1 = "_") entao
           ld1 <- dig
           na <- na + 1
           verifica <- "1"
      fimse

      se (l2 = dig) e (ld2 = "_") entao
               ld2 <- dig
               na <- na + 1
               verifica <- "1"
      fimse
      se (l3 = dig) e (ld3 = "_") entao
               ld3 <- dig
               na <- na + 1
               verifica <- "1"
      fimse
      se (l4 = dig) e (ld4 = "_") entao
               ld4 <- dig
               na <- na + 1
               verifica <-  "1"
      fimse
      se (l5 = dig) e (ld5 = "_") entao
               ld5 <- dig
               na <- na + 1
               verifica <- "1"
      fimse
      se (l6 = dig) e (ld6 = "_") entao
               ld6 <- dig
               na <- na + 1
               verifica <- "1"
      fimse
      se (l7 = dig) e (ld7 = "_") entao
               ld7 <- dig
               na <- na + 1
               verifica <- "1"
      fimse
      se (verifica = "0") entao
      ne <- ne + 1
      fimse
      escreval("==============================================================")
      escreval("==============================================================")
                fimrepita

      fimalgoritmo
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.