Como a latitute e longitude de um ponto automaticamente (google maps)

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.

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
1 Curtida

Tópico de 2017…

………………….

2 Curtidas

alguem tem a dica de como colcoar em um campo essa latitude e longitude e salvar no banco de dados ?

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.

1 Curtida

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.