0

这是我正在使用的代码:

http://jsfiddle.net/njDvn/36/

奇怪的是,在我点击地理编码按钮后,自动建议似乎只在最后一个输入框上激活。这是我工作的代码:

<html>
<head>
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script>
function getLatLng() {
    var geocoder = new google.maps.Geocoder();
    var address = document.getElementById('address').value;

    var input = document.getElementById('searchTextField');
    var options = {
    types: [],
    };

var autocomplete = new google.maps.places.Autocomplete(input, options);

    geocoder.geocode({
        'address': address
    }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            var latLng = results[0].geometry.location;
            $('#lat').val(results[0].geometry.location.lat());
            $('#lng').val(results[0].geometry.location.lng());
        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
}
</script>
</head>
    <body>
        <div>
            <input id="address" type="textbox" value="Sydney, NSW">
            <input type="button" value="Geocode" onclick="getLatLng()">
            <input id="lat" type="textbox" value="lat">
            <input id="lng" type="textbox" value="lng">
            <input id="searchTextField" type="text" size="50" value="">

           </div>
      </body>
</html>

什么给了?我以前从未有过这种情况,但这是我尝试编写的第一个脚本。

4

2 回答 2

1

这是由于以下行:

var autocomplete = new google.maps.places.Autocomplete(input, options);

input将其链接到:

var input = document.getElementById('searchTextField');

这是最后一个输入框。

此外,您必须geocode在 Google 自动完成链接之前单击该按钮,因为您已将getLatLng()调用绑定到单击 Geocode 按钮:

<input type="button" value="Geocode" onclick="getLatLng()">

由于 Google 自动完成功能在此功能中激活,因此您无法在不按下按钮的情况下对其进行初始化。

于 2012-11-03T21:36:39.290 回答
0

您正在函数中初始化自动完成getLatLng功能,因此它不可用;直到单击按钮并调用函数后才可用

于 2012-11-03T21:41:32.970 回答