Pergunta

Supostamente, é possível obter isso de Google Maps ou algum tipo de serviço. (Endereços dos EUA só não é bom o suficiente.)

Foi útil?

Solução

O termo que você está procurando é geocodificação e sim Google não fornecer este serviço.

Outras dicas

Além do Google geocodificação web serviço , há também um competindo fornecido pelo Yahoo . Em um projeto recente onde geocodificação é feito com interação do usuário, incluí suporte para ambos. A razão é que eu descobri que, especialmente fora os EUA, sua manipulação dos locais mais obscuros varia muito. Às vezes, o Google terá a melhor resposta, às vezes Yahoo.

Uma pegadinha para estar ciente: se o Google realmente pensa que eles não sabem onde seu lugar é, eles vão voltar uma falha indicando 602 erro. Yahoo, por outro lado, se pode descascar para fora uma cidade / província / estado / etc fora de seu endereço ruim, voltará a localização do centro dessa cidade. Então você tem que prestar atenção para os resultados que você começa a ver se eles são realmente o que você quer. Existem campos auxiliares em alguns resultados que lhe dizem respeito: Yahoo chama este campo "precisão" e Google chama de "precisão"

.

Se você quiser fazer isso sem depender de um serviço, então você baixar o TIGER Shapefiles do Censo dos EUA.

Você olha para cima a rua você está em interessado, que terá vários segmentos. Cada segmento terá um endereço inicial e endereço final, e você interpolar ao longo do segmento de encontrar onde no segmento de sua casa número mentiras.

Isto irá fornecer-lhe com um lon par / lat.

Tenha em mente, no entanto, que os serviços on-line empregam uma grande quantidade de verificação de endereços e correção, o que você teria que duplicar, bem como para obter bons resultados.

Observe também que tão agradável como de dados livre é, ele não é perfeito - as últimas ruas não estão lá (eles podem estar na dados do Google usos), e as ruas podem estar fora de sua verdadeira localização por alguns montante devido imprecisões pesquisa. Mas para 98% de geocodificação necessidades Ele funciona perfeitamente, é gratuito, e você controla tudo para que você está reduzindo dependências em seu aplicativo.

OpenStreetMaps tem o objetivo de tudo o mapeamento no mundo, embora eles não são muito lá é guias vale a pena manter em como eles fornecem seus dados sob uma licença CC

No entanto, muitos (a maioria?) De outros países só são mapeadas por gov't ou serviços para os quais você precisa pagar uma taxa. Se você não precisa de geocódigo dados muito, em seguida, usando o Google, Yahoo, ou alguns dos outros serviços de mapeamento gratuito em todo o mundo pode ser o suficiente.

Se você tem geocodificar um monte de dados, então você vai ser melhor servido por leasing dados de mapas de um grande fornecedor, como a TeleAtlas.

-Adam

Você também pode tentar o OpenStreetMap NameFinder , que contém código-fonte aberto, wiki-como dados de rua para (potencialmente) o mundo inteiro. NameFinder deixará de existir no final de agosto, mas Nominatim é a sua substituição.

O Google exige que você mostrar um mapa do Google com seus dados, com um máximo de 2,5k (era 25k) HTTP solicitações por dia. Útil, mas você tem que assistir uso.

Eles têm

http://groups.google.com/group/Google-Maps-API/web/resources-non-google-geocoders

(Google, desde então, removido isso. Se você ver um duplicado ou cache, eu vou ligar a isso.)

... em que eu achei GeoNames que tem tanto um download db, serviço web gratuito e um serviço de web comercial.

termos de serviço do Google permitirá que você use a sua API de geocodificação de graça se o seu site é por sua vez livre para os consumidores a usar. Se não você terá que obter uma licença para os Mapas Enterprise.

Para uso com Drupal e PHP (e facilmente modificado):

function get_lat_long($address) {
  $res = drupal_http_request('http://maps.googleapis.com/maps/api/geocode/json?address=' . $address .'&sensor=false');
  return json_decode($res->data)->results[0]->geometry->location;
}

Você pode ter um olhar para a documentação da API do Google Maps aqui para começar um começo sobre isso:

http://code.google.com/apis/maps /documentation/services.html#Geocoding

Ele também parece ser algo que você pode fazer para endereços internacionais, utilizando Live Maps também:

http://virtualearth.spaces.live.com/blog /cns!2BBC66E99FDCDB98!1588.entry

Você também pode fazer isso com MapPoint Web Services da Microsoft.

Aqui está um post que explica como: http://www.codestrider.com/BlogRead. aspx? b = b5e8e275-cd18-4c24-b321-0da26e01bec5

Código R para obter a latitude ea longitude de um endereço

# CODE TO GET THE LATITUDE AND LONGITUDE OF A STREET ADDRESS WITH GOOGLE API
addr <- '6th Main Rd, New Thippasandra, Bengaluru, Karnataka'  # set your address here
url = paste('http://maps.google.com/maps/api/geocode/xml?address=', addr,'&sensor=false',sep='')  # construct the URL
doc = xmlTreeParse(url) 
root = xmlRoot(doc) 
lat = xmlValue(root[['result']][['geometry']][['location']][['lat']]) 
long = xmlValue(root[['result']][['geometry']][['location']][['lng']]) 
lat
[1] "12.9725020"
long
[1] "77.6510688"

Se você quiser fazer isso em Python:

import json, urllib, urllib2

address = "Your address, New York, NY"

encodedAddress = urllib.quote_plus(address)
data = urllib2.urlopen("http://maps.googleapis.com/maps/api/geocode/json?address=" + encodedAddress + '&sensor=false').read()
location = json.loads(data)['results'][0]['geometry']['location']
lat = location['lat']
lng = location['lng']
print lat, lng

Note que o Google parece solicitações do acelerador se vê mais do que uma certa quantidade, assim você quiser usar uma chave de API em sua solicitação HTTP.

Eu tinha um lote de 100.000 registros para ser geocode e correu para o limite do Google API (e desde que foi para uma aplicação corporativa interna, tivemos que atualizar para o seu serviço premium, que é de US $ 10K plus)

Então, eu usei isso em vez disso: http://geoservices.tamu.edu/Services/ geocode / BatchProcess / - eles também têm uma API. (O custo total foi de cerca de ~ 200 $)

Você pode tentar isso em JavaScript para cidade como Kohat

var geocoder = new google.maps.Geocoder();
var address = "kohat";
geocoder.geocode( { 'address': address}, function(results, status) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
alert(latitude+" and "+longitude);
  } 
});

enter descrição da imagem aqui

Em python usando geopy PyPI usado para obter a latitude, langitude, CEP etc .. Aqui está o código de exemplo de trabalho ..

from geopy.geocoders import Nominatim

geolocator = Nominatim(user_agent="your-app-id")

location = geolocator.geocode("Your required address ")

if location:
    print('\n Nominatim ADDRESS :',location.address)
    print('\n Nominatim LATLANG :',(location.latitude, location.longitude))
    print('\n Nominatim FULL RESPONSE :',location.raw)
else:
   print('Cannot Find')

Em Nominatim - Alguns endereços não pode trabalhar, então eu apenas tentei MapQuest .
Ele retorna corretamente. Mapquest fornece livre de plano de 15000 transações / mês. É o suficiente para mim.

Exemplo de código:

import geocoder
g = geocoder.mapquest("Your required address ",key='your-api-key')

for result in g:
   # print(result.address, result.latlng)
   print('\n mapquest ADDRESS :',result.address,result.city,result.state,result.country)
   print('\n mapquest LATLANG :', result.latlng)
   print('\n mapquest FULL RESPONSE :',result.raw)

Hope isso ajuda.

Eu sei que isso é questão de idade, mas google mudar maneira de obter a latitude e longitude em comum com base.

código HTML

<form>
    <input type="text" name="address" id="address" style="width:100%;">
    <input type="button" onclick="return getLatLong()" value="Get Lat Long" />
</form>
<div id="latlong">
    <p>Latitude: <input size="20" type="text" id="latbox" name="lat" ></p>
    <p>Longitude: <input size="20" type="text" id="lngbox" name="lng" ></p>
</div>

Código JavaScript

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" async defer></script>

    <script>
    function getLatLong()
    {
        var address = document.getElementById("address").value;
        var geocoder = new google.maps.Geocoder();
        geocoder.geocode( { 'address': address}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                var latitude = results[0].geometry.location.lat();
                document.getElementById("latbox").value=latitude;
                var longitude = results[0].geometry.location.lng();
                document.getElementById("lngbox").value=longitude;
            } 
        });
    }
    </script>

Para mais informações consulte este link https://www.phpkida.com/java-script / get-latitude-longitude-de-address /

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top