2016-05-14 4 views
0

Я пытаюсь преобразовать адрес в широту и долготу, но значения не отображаются. Я даже хочу сохранить результат в базе данных, но я не могу получить lat/long на первом месте. Я хотел бы знать, где я ошибся.Преобразование адреса в широту и долготу

Ниже приведен код:

<html> 
<head> 
<title>Theater</title> 
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&language=en" ></script> 
    <script> 
    // Called when page is loaded 
    function Init() 
    { 
    var address = Document.getElementById("address"); 
    var city = Document.getElementById("city"); 
    var state = Document.getElementById("state"); 
    var zip = Document.getElementById("zip"); 
    var country = Document.getElementById("country"); 
     // make google call to convert address to lat/lng coordinate 
     var geocoder = new google.maps.Geocoder(); 
     geocoder.geocode({ 'address': address+city+state+zip+country}, ShowLatLng); 
    } 

    // This function is the called when Google geocode() returns the result of geocoding an address 
    function ShowLatLng(results, status) 
    { 
     if (status == google.maps.GeocoderStatus.OK) 
     { 
      document.getElementById('latlng').innerHTML = results[0].geometry.location; 
     } 
    } 
</script> 
</head> 
<body> 
<table><tr> 
<td> Address &emsp; </td> 
<td><input type="text" name="address" id="address"> </td> </tr> 
<tr><td> City</td><td><input type="text" name="city" id="city"></td> 
<td>State </td><td><input type="text" name="state" id="state"></td></tr> 
<tr><td>zip</td><td><input type="text" name="zip" id="zip"></td> 
<td>Country</td><td><input type="text" name="country" id="country"></td> 
</tr></table> 
<input type="button" onclick="Init()" value="Determine Lat/Lon"> 
<label id="latlng"></label> 
+0

сообщения Какие ошибки вы видите в консоли JavaScript в браузере? Есть одна вопиющая ошибка - 'Documet' –

+0

Ошибка. Его просто не отображается. @Pekka 웃 – Shraddha

+0

В * ошибке * в * var address = Documet.getElementById ("адрес"); * из-за опечатки 'Documet'. Вы уверены, что ищете консоль ошибок? –

ответ

0

Вы сказали, что вы не видите каких-либо ошибок JS в консоли, так что моя догадка ваш адрес не соответствует.

У меня есть две идеи по этому вопросу.

Во-первых, возможно, адрес неправильно отформатирован. Иногда API-интерфейсы геокодирования не могут совпадать с адресом, потому что есть аббревиатуры, отсутствующие слова (например, «улица» или «дорога» и т. Д.), Поскольку числа имеют тире или другие перерывы или другие возможности пунктуации и орфографии. Очень полезно сделать адрес standardization —, делая адрес однородным — и validation — проверяя адрес по базе данных —, чтобы получить форматирование правильно. Я вижу, что вы используете API Карт Google, и Google действительно хорошо работает с поисковыми запросами, но это не означает, что они идеально подходят для стандартизации адресов, и они не выполняют проверку адреса.

Во-вторых, ваш код здесь:

geocoder.geocode({ 'address': address+city+state+zip+country}, ShowLatLng); 

, вероятно, не работает правильно. Если:

address = "123 My House Road"; 
city = "My City"; 
state = "AA"; 
zip = "12345"; 
country = "USA"; 

затем address+city+state+zip+country результаты в 123 My House RoadMy CityAA12345USA. Обратите внимание, что между частями адреса нет пробелов. Это в основном та же проблема, что и я упоминал выше: адрес не соответствует — он не найден.

(Полное раскрытие: я работал на SmartyStreets, проверка адреса компании.)

Смежные вопросы