将地址转换为纬度和经度
Posted
技术标签:
【中文标题】将地址转换为纬度和经度【英文标题】:Converting an address to lattitude and longitude 【发布时间】:2016-05-14 19:57:59 【问题描述】:我正在尝试,但值未显示。 我什至想将结果存储在数据库中,但我无法首先获得纬度/经度。我想知道我哪里出错了。
下面是代码:
<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   </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>
【问题讨论】:
您在浏览器的 JavaScript 控制台中看到了哪些错误消息?有一个明显的错误 -Documet
没有错误。它只是不显示。 @Pekka 웃
由于Documet
的拼写错误,var address = Documet.getElementById("address");
有一个错误得到。您确定要查看错误控制台吗?
@Shraddha:你得到这个问题的答案了吗?
不,我希望它获取我们输入的地址并将其转换为纬度和经度@Nana Partykar
【参考方案1】:
您说您在控制台中没有看到任何 JS 错误,所以我最好的猜测是您的地址不匹配。
我对这个问题有两个想法。
首先,地址格式可能不正确。有时,地理编码 API 无法匹配地址,因为存在缩写、缺少单词(如“street”或“road”等),因为数字有破折号或其他中断,或其他标点和拼写可能性。执行地址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 工作。)
【讨论】:
以上是关于将地址转换为纬度和经度的主要内容,如果未能解决你的问题,请参考以下文章