将地址转换为经度和纬度

问题描述:

我想将地址转换为经度和纬度,但值不显示。 我甚至想将结果存储在数据库中,但我无法在第一时间获得经纬度。我想知道我出错的地方。将地址转换为经度和纬度

下面是代码:

<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(“address”); *由于错误'Documet',* got *是错误的。你确定你正在寻找错误控制台吗? –

你说你没有看到在您的控制台任何JS错误,所以我最好的猜测是你的地址不匹配。

我对这个问题有两个想法。

首先,可能地址格式不正确。有时候,地理编码API无法匹配地址,因为有缩写,缺少的字词(如“街道”或“道路”等),因为数字有破折号或其他中断,或其他标点符号和拼写可能性。做地址standardization —使地址统一—和validation —检查地址与数据库—以获得正确的格式是非常有用的。我发现您使用的是Google Maps API,而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,地址认证公司)