Flávio,
Muito obrigado pelo uso de seu tempo em ajudar-me nisto.
Nesta última solução funcionou, gravando no BD!
Flávio,
Muito obrigado pelo uso de seu tempo em ajudar-me nisto.
Nesta última solução funcionou, gravando no BD!
O Flávio postou a solução, segue uma outra opção por json, dá para recuperar o endereço completo em ambas
$address = 'avenida+goias,100,sao+caetano+do+sul,sao+paulo,brasil';
$geocode = file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$address.'&sensor=false');
$output= json_decode($geocode);
$lat = $output->results[0]->geometry->location->lat;
$long = $output->results[0]->geometry->location->lng;
echo "$lat, $long";
//se quiser testar coloque os valores acima na pesquisa do maps.google.com.br
Rodrigo,
Da forma como colocou funcionou também, mas é necessário “trabalhar” um pouco o conteúdo do campo para esta “consulta”.
O que achei interessante na última solução do Flávio é que você concatena os campos como estão.
Vou fazer mais testes para ver como fica a abertura pelas coordenadas de latitude + longitude, já que a primeira tentativa abre o mapa sem mapa! Agora vamos a esta outra etapa.
Fico muito agradecido pelo tempo que usaram em ajudar-me neste problema / desafio.
Na verdade ambos são iguais, mudam apenas o retorno.
Coloquei dessa maneira o address pois assim é 100% de certeza do retorno correto.
Se der erro no address corre o risco de até retornar porém um local em Madrid se não me engano.
As vezes vale a penas tratar um pouco sim…
Bom dia pessoal,
Esse procedimento funciona na versao 8 do SC? Estou tentando implementar como descrito nos topicos acima, mas a aplicacao dá um erro…
Msg de erro:
file_get_contents(http://maps.google.com/maps/api/geocode/json?address=Av Monsenhor Alderigi 900,Poços de Caldas,MG&sensor=false): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request
Trying to get property of non-object
Se alguem puder me ajudar, ficarei grato.
Obrigado
Acredito que sejam os caracteres especiais.
Eu resolvi comprando uma base com CEPs e latitudes conforme o link
http://produto.mercadolivre.com.br/MLB-844720638-base-cep-com-ibge-latitude-ddd-fev-2017-_JM
teste numa blank:
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Buscar Informações detalhadas do endereço</title>
</head>
<body>
<?
//$xml = simplexml_load_file("http://maps.google.com/maps/api/directions/xml?sensor=false&origin=Boston,MA&destination=Concord,MA");
$xml = simplexml_load_file("http://maps.google.com/maps/api/directions/xml?sensor=false&origin=São Bernardo do Campo+-%20+SP,+0910-290,Rua+dos+Cravos&destination=Guarulhos+-+SP,+07060-000");
//Waypoints no final da URL define pontos de referência
//&waypoints=Charlestown,MA|Lexington,MA
if ($xml->status == 'OK'){
echo ($xml->route->leg->distance->value/1000)." Km";
echo '<br>Aproximadamente '.$xml->route->leg->duration->text;
}else{
echo 'Erro ao calcular o local!!!';
}
?>
</body>
</html>
<?
Acredito que sejam os caracteres especiais.
Eu resolvi comprando uma base com CEPs e latitudes conforme o link
http://produto.mercadolivre.com.br/MLB-844720638-base-cep-com-ibge-latitude-ddd-fev-2017-_JM
Nossa muito SHOW esta base.
Valeu !!! Obrigado
qual a solução ?
Testei direto no navegador e está correto o retorno do seu parâmetro abaixo:
{
"results" : [
{
"address_components" : [
{
"long_name" : "900",
"short_name" : "900",
"types" : [ "street_number" ]
},
{
"long_name" : "Avenida Monsenhor Alderige",
"short_name" : "Av. Monsenhor Alderige",
"types" : [ "route" ]
},
{
"long_name" : "Jardim Country Club",
"short_name" : "Jardim Country Club",
"types" : [ "political", "sublocality", "sublocality_level_1" ]
},
{
"long_name" : "Poços de Caldas",
"short_name" : "Poços de Caldas",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Minas Gerais",
"short_name" : "MG",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Brasil",
"short_name" : "BR",
"types" : [ "country", "political" ]
},
{
"long_name" : "37704",
"short_name" : "37704",
"types" : [ "postal_code", "postal_code_prefix" ]
}
],
"formatted_address" : "Av. Monsenhor Alderige, 900 - Jardim Country Club, Poços de Caldas - MG, Brasil",
"geometry" : {
"location" : {
"lat" : -21.7947925,
"lng" : -46.6031532
},
"location_type" : "ROOFTOP",
"viewport" : {
"northeast" : {
"lat" : -21.7934435197085,
"lng" : -46.60180421970851
},
"southwest" : {
"lat" : -21.7961414802915,
"lng" : -46.6045021802915
}
}
},
"partial_match" : true,
"place_id" : "ChIJW3XfqnrbyZQRhu-IkliX0FU",
"types" : [ "street_address" ]
}
],
"status" : "OK"
}
Irei realizar um teste aqui no PHP da função file_get_contents().
Testei aqui e failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request acontece devido aos ESPAÇOS na URL:
http://maps.google.com/maps/api/geocode/json?address=Av Monsenhor Alderigi 900,Poços de Caldas,MG&sensor=false
Testei outras URLs sem espaço e não apresentou a mensagem.
Mas a função retorna string(0) “” mesmo com conteúdo via browser.
Deve haver uma solução para o caso acima mas não a tenho.
Eu utilizo JavaScript para recuperar Latitude e Longitude:
Exemplo:
?>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var geocoder = new google.maps.Geocoder();
var address = "Av Monsenhor Alderigi 900,Poços de Caldas,MG";
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
alert(latitude);
}
});
</script>
<?php
Eu uso a versão 8.1.067 e funcionou normalmente.
teste numa blank:
?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Buscar Informações detalhadas do endereço</title> </head> <body> <? //$xml = simplexml_load_file("http://maps.google.com/maps/api/directions/xml?sensor=false&origin=Boston,MA&destination=Concord,MA"); $xml = simplexml_load_file("http://maps.google.com/maps/api/directions/xml?sensor=false&origin=São Bernardo do Campo+-%20+SP,+0910-290,Rua+dos+Cravos&destination=Guarulhos+-+SP,+07060-000"); //Waypoints no final da URL define pontos de referência //&waypoints=Charlestown,MA|Lexington,MA if ($xml->status == 'OK'){ echo ($xml->route->leg->distance->value/1000)." Km"; echo '<br>Aproximadamente '.$xml->route->leg->duration->text; }else{ echo 'Erro ao calcular o local!!!'; } ?> </body> </html> <?
Acredito que ajude!
?>
<script>
window.onload = function() {
obterLocalizacao();
};
</script>
<script>
function obterLocalizacao() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
document.getElementById("id_sc_field_latitude").value = latitude;
document.getElementById("id_sc_field_longitude").value = longitude;
// Chamada para a API Nominatim para obter detalhes do endereço
var nominatimAPI = "https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=" + latitude + "&lon=" + longitude;
fetch(nominatimAPI)
.then(response => response.json())
.then(data => {
// Analisar a resposta para obter detalhes do endereço
var endereco = data.address;
// Construir o endereço completo com todas as informações possíveis
var enderecoCompleto = endereco.road + ', ' +
(endereco.house_number || '') + ', ' +
(endereco.neighbourhood || endereco.suburb || endereco.village || '') + ', ' +
endereco.city + ', ' +
endereco.state + ', ' +
endereco.country;
document.getElementById("id_sc_field_enderecoapi").value = enderecoCompleto;
})
.catch(error => console.log('Erro ao obter informações de geocodificação:', error));
}, function(error) {
// Tratamento de erro ao obter a localização
});
} else {
// Geolocalização não é suportada no navegador
}
}
</script>
<?php
Tópico de 2017…
………………….
alguem tem a dica de como colcoar em um campo essa latitude e longitude e salvar no banco de dados ?
teste numa blank: ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Buscar Informações detalhadas do endereço</title> </head> <body> <? //$xml = simplexml_load_file("http://maps.google.com/maps/api/directions/xml?sensor=false&origin=Boston,MA&destination=Concord,MA"); $xml = simplexml_load_file("h…
Aí está em PHP, o restante é só mover o valor para o campo.
Sugiro em caso de tópicos antigos sempre criar um tópico novo em vez de reabrir o tópico, as chances de obter mais respostas aumentam.
funcionou mas tiver de adaptar umas coisas.
so não estou conseguindo e ele somente aprecer no campo e não na tela so falta isso teria alguma solução ?
Se for um campo SCRIPTCASE e este estar posicionado na tela, será exibido o valor.
Remova o campo da tela em posicionar campos que o mesmo continuará com seus valores sem
Ser apresentado na tela.