将地址转换为纬度和经度

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 &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>

【问题讨论】:

您在浏览器的 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 工作。)

【讨论】:

以上是关于将地址转换为纬度和经度的主要内容,如果未能解决你的问题,请参考以下文章

将地址转换为纬度和经度

将纬度/经度转换为地址 [重复]

R - 如何将纬度和经度坐标转换为地址/人类可读的位置?

我们如何将纬度和经度转换为网站中的地址?

当互联网关闭时,如何将纬度,经度转换为地址?

将地址转换为纬度/经度(使用php)