MC
Obter latitude longitude de um marcador googlemaps
Estou necessitando obter a latitude e longitude, e ao criar um form, estou com dificuldades em exibir-lo, não sei qual é o erro, abri no código fonte e parece que está tudo ok, só que ele não carrega, alguém já passou por algo? abaixo um código funcionando
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="js/map.js"></script>
</head>
<body>
<div class="coordenadas">
<span>Coordenadas Google Maps</span>
<label for="lat">Lat:</label>
<input type="text" name="lat" id="lat" value="0" />
<label for="lng">Lng:</label>
<input type="text" name="lng" id="lng" value="0" />
</div>
<div id="map-canvas"/>
</body>
</html>
Abaixo o código adaptado:
Obrigado.
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="css/style.css">
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="js/map.js"></script>
</head>
<body>
<div class="coordenadas">
<span>Coordenadas Google Maps</span>
<label for="lat">Lat:</label>
<input type="text" name="lat" id="lat" value="0" />
<label for="lng">Lng:</label>
<input type="text" name="lng" id="lng" value="0" />
</div>
<div id="map-canvas"/>
</body>
</html>
Abaixo o código adaptado:
- <?php
- class ObterLatitudeLongitude extends TPage
- {
- private $form;
- function __construct()
- {
- parent::__construct();
- parent::include_css('app/control/projeto/geo/style.css'); //local do css
- parent::__construct();
- // create the form using TQuickForm class
- $this->form = new TQuickForm('ObterLatitudeLongitude');
- $this->form->class = 'tform';
- $this->form->setFormTitle('Obter Latitude Longitude');
- $this->form->style = 'width:100%;height:700px';
- $div_mapa = new TElement('div');
- $div_mapa->style = 'height:100%';
- $div_mapa->id = 'mapa';
- $div_mapa = new TElement('div');
- $div_mapa->style = 'height:100%';
- $div_mapa->{'class'} = 'coordenadas';
- $span = new TElement('span');
- $mensagem = 'Coordenadas Google Maps';
- $span->add($mensagem);
- //campos
- $lat = new TEntry('lat');
- $lat->id = 'lat';
- $lat->name = 'lat';
- $lat->value = '0';
- $lng = new TEntry('Lng');
- $lng->id = 'lng';
- $lng->name = 'lng';
- $lng->value = '0';
- $this->form->addQuickField('Latitude', $lat, '40%' );
- $this->form->addQuickField('Longitude', $lng, '40%' );
- $div1 = new TElement('div');
- $div1->{'id'} = 'map-canvas';
- $div1->id = 'map-canvas';
- $div1->style = 'width:100%;height:250px';
- $this->form->add($div_mapa);
- $this->form->add($div1);
- TPage::include_js('https://maps.googleapis.com/maps/api/js?sensor=false');
- TPage::include_js('app/control/projeto/geo/map.js'); //local do .js
- $container = new TVBox;
- $container->style = 'width: 90%';
- $container->add(TPanelGroup::pack('Obter latitude longitude', $this->form));
- parent::add($container);
- }
- }
- ?>
Obrigado.
Boas
Não fiz nada parecido, mas aqui vai uma contribuição de um companheiro nosso.
quem sabe não te ajuda.
www.adianti.com.br/forum/pt/view_801?componente-tgeocode
Abraços
Inspecionando o código, descobri que o frame bloqueia outras requisições de arquivos js para carregar outros js, então reformulei o código e adicionei os outros js que carregavam em tempo de execução, mais ainda não carrega a div com o mapa, abaixo segue o código reescrito, se alguém já se deparou com isso e sabe como resolver, obrigado
Miuller
vamos lá eu uso google maps com o Adianti a algum tempo , e sem problemas , mas tem algumas coisas em levar em conta
1- para iniciar de um tamanho fixo de altura (height) para a div do mapa (não em % e sim em pixel)
2- tem que usar a KEY da API para que seja carregado o mapa caso contrario não vai carregar mesmo, exibindo uma mensagem no centro (onde deveria estar o mapa) dizendo que não foi possivel carregar, e no console de desenvolvimento vai aparecer a mensagem dizendo que falta a api.
Os script utilizado é este aqui
<script async defer src="https://maps.googleapis.com/maps/api/js?key=SUA_API_KEY_TEM_QUE_IR_AQUI"></script>
referencia da API (passo inicial)
https://developers.google.com/maps/documentation/javascript/adding-a-google-map
ahh outra coisa que quase me esqueço não use eventos dinamicos , use tudo estatico, para não ter recarga do formulario, si tiver recarga, vai dar erro de carregamento no mapa, sem mencionar, que vai estar somando 1 LOAD a sua KEY API
(veja no faq do google que tem limites de loads do mapa)
Obrigado pela resposta, em outros formulário eu já exibo o mapa, só que nesse exemplo em questão ele não carrega, já setei a lagura e altura em px mas ainda não deu certo.
Não é necessário a api key nesse exemplo, pois utilizo em outro sistema e funciona perfeitamente.
Eu carrego o formulário direto no construtor, então não é necessário colocar métodos estáticos, o código é bem simples, para obter a latitude e a longitude apenas clicando no marcador, creio eu que deve ser um bloqueio do frame pois no código original eu adiciono somente um arquivo js do google e ele se encarrega de carregar outros. abaixo tem um link do exemplo que necessito adaptar
maps.marnoto.com/pesquisacoordenadas/exemplo.html
Obrigado.
Como disse teria que ver no console, peguei seu codigo e fiz um teste aqui veja que tem varios erros
https://i.imgur.com/MUiZtMy.png
inclusive reclamou a API KEY
o problema é que a inclusão dos SCRIPTs esta antes da renderização da DIV, sendo assim causa error, terá que fazer diferente, pois o TPAGE faz isso joga primero os scripts e depois o elementos
Realizei algumas mudanças, porém sem êxito até o momento, poderia testar o código original deste exemplo?
Obrigado</link>
Claro posso sim, apenas para confirmar , quando tu diz codigo original se refere ao seu primeiro POST ou a este ultimo com o HTML??
Esse ultimo código vc pode salvar com a extensão .html e executar no navegador
Olá Miuller, acabo de testar aqui esse HTML que enviaste por ultimo e tem 2 coisas a fazer para que possa ver o mapa (coisas que mencionei no meu post anterior)
1- dar um tamanho em pixel para a DIV do mapa
2- Incluir a API KEY
veja como ficou
https://i.imgur.com/qHy4h9q.png
abaixo seu código com o ajuste
Acho que me expressei mau, o código que colei anteriormente é de um exemplo funcional que utilizo há algum tempo em um sistema que fiz no dreamwever, a adaptação para para o frame é que está dando erro e não carrega o mapa, se puder dar uma olhada no código abaixo e testar, fico agradecido, já inspecionei o código e me parece que está tudo ok, só que não carrega o form
Obrigado novamente
é ainda esta errado, fiz a correção para você , segue abaixo o codigo PHP e mais abaixo o codigo JAVASCRIPT para colocar no arquivo >>> www.ciapomares.com.br/Adm5269/geo/js/map.js
Observações sobre erros
1- estavas usando no javascript (getElementById) o ADIANTI gera IDs unicos e aleatorios para os inputs , use com JQUERY mesmo pegando pelo nome (esta no codigo javascript que te passei na função getCoords)
2- estavas incluindo 2 vezes a API do Google Maps (não pode apenas deve ser inserida 1 vez, e na mesma você informa os parametros Linha 41 do codigo PHP que te passei
Compare o que te passei com o que você me passou e vai ver as pequenas correções que foi feito para que funcione
Abraços
Funcionou perfeitamente, de agora em diante vou pegar os atributos pelo 'name', obrigado.
Vou postar o código .css que ficou faltando abaixo para caso alguém necessite, e o link do desenvolvedor do exemplo,
<style>
html {
height: 100%;
}
body {
height: 100%;
margin: 0;
padding: 0;
}
label {
margin-left: 15px;
}
#map-canvas {
height: 95%;
width: 100%;
}
#iw_container .iw_title {
font-size: 16px;
font-weight: bold;
}
.iw_content {
padding: 15px 15px 15px 0;
}
</style>
Link do desenvolvedor maps.marnoto.com/pesquisacoordenadas/exemplo.html
Obrigado novamente, abraços