Pesquisa por latitude e longitude por códigos postais - PHP - Portugal-a-Programar
Pesquisa por latitude e longitude por códigos postais
By fauves, October 17, 2016 in PHP
fauves 0
Tenho estado a tentar atualizar uns códigos postais cp4+cp3 com os dados referentes à latitude e longitude. Aqui no forum encontrei um post do Cusco, que disponibilizava todas as ferramentas. Tentei reproduzir os passos todos, mas ao associar as coordenadas gps, ele apenas pesquisa por CP4. No ficheiro final do Cusco as coordenadas também são referentes a CP4.. por alguma razão o código não consegue pesquisar por cp4-cp3.
Alguem me pode dar uma ajuda a tentar ver se o código pode ser melhorado?
https://www.portugal-a-programar.pt/forums/topic/40363-lista-c%C3%B3digos-postais-com-latlng/
1º referes que estás a usar algo que encontraste no fórum sem dar uma referencia (link) directo para o tópico em questão
2º não apresentas uma descrição do problema, mas sim a tua suposta análise dos resultados obtidos
3º apresentas um código em PHP no mínimo, estranho (ligações ao google na china e mudanças de IP)
Já atualizei a fonte.
Basicamente este código de php vai a um api do google, através dos códigos postais portugueses (4+3 digitos), fazer uma pesquisa e recolher as coordenadas de latitude e longitude. O cusco desenvolveu este código para que possamos atualizar uma base de dados mySQL com todos os dados. A questão é, quando executo esta página, parece que ele apenas pesquisa pelos primeiros 4 digitos, ignorando os restantes 3..
basta dois pedidos directos à API para verificar que o problema não é nesta.
logo, o que poderás fazer é ver directamente o resultado da chamada desse código manhoso a ver se realmente é nele que o problema se encontra
11 minutos atrás, HappyHippyHippo disse:
Ao executar o ficheiro, o output dos 7 números dos códigos postais é o correto, mas as coordenadas não.
2830-098|1|38.6118719 -9.0405249
2830-099|1|38.6118719 -9.0405249
Analisando os seguintes números: 2830-098
através de: http://ditu.google.cn//maps/api/geocode/json?address=2830-098&sensor=false&components=country:PT
eu queria que ele fosse buscar estas coordenadas de location (2830-098):
"formatted_address" : "2830-098 Barreiro, Portugal",
"lat" : 38.65858610000001,
"lng" : -9.062972
mas ele vai buscar estas (2830):
"formatted_address" : "2830, Portugal",
"lat" : 38.6118719,
"lng" : -9.040524899999999
Removendo "&sensor=false&components=country:PT" do link do API, ele vai buscar corretamente. Penso que não falhe em nenhum.
o problema é que o parsing da resposta da google não faz sentido, está na escolha cega do +ultimo resultado
deverias pesquisar a lsita de resultados e obter aquele que não retorna o parâmetro "partial_match" e/ou aquele que vem como tipo "postal_code_prefix"
Olá HappyHippyHippo
Obrigado desde já pelo input.
Estás a dizer que o script deve tentar obter aquele que não tiver partial_mathc, e/ou nao tiver postal_code_prefix - certo?
Sinceramente fiz a busca cega ao ultimo, porque em alguns casos de exemplo parecia-me o mais acertado - se tiveres melhor sugestão avisa, mas vou então implementar essa escolha no script :-)