Javascript执行-googleapi

Javascript执行-googleapi,javascript,google-api,Javascript,Google Api,这是我使用的代码: <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 = d

这是我使用的代码:

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

奇怪的是,autosuggest似乎只在我点击geocode按钮后的最后一个输入框中激活。这是我使用的代码:

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

函数getLatLng(){
var geocoder=new google.maps.geocoder();
var address=document.getElementById('address')。值;
var input=document.getElementById('searchTextField');
变量选项={
类型:[],
};
var autocomplete=new google.maps.places.autocomplete(输入,选项);
地理编码({
“地址”:地址
},功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
var latLng=results[0]。geometry.location;
$('#lat').val(结果[0].geometry.location.lat());
$('#lng').val(结果[0].geometry.location.lng());
}否则{
警报(“地理编码因以下原因未成功:“+状态”);
}
});
}

​有什么好处?我以前从未使用过此脚本,但这是我尝试编写的第一个脚本。

这是由于以下几行:

var autocomplete = new google.maps.places.Autocomplete(input, options);
input
将其链接到:

var input = document.getElementById('searchTextField');
这是最后一个输入框

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

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


由于Google autocomplete在此函数中激活,因此您无法在不按下按钮的情况下对其进行初始化。

您正在
getLatLng
函数中初始化autocomplete,因此它不是;'在单击按钮并调用函数之前,此功能不可用

,但为什么我必须在searchTextField充当自动搜索器之前单击geocode按钮?我明白了,你能解释一下我如何将其放入自己的函数中,这样我就不必单击按钮了吗?啊,我明白了,你能解释一下我如何把它放在它自己的函数中,这样我就不必点击按钮了吗?你从来不调用函数。需要在onload处理程序中,以便在调用函数时输入存在。顺便说一句,他反对Google Maps TOS在没有实现地图编码的情况下使用地理编码。我已经在他们的论坛上查看过了,可以在下一页中显示,因为用户实际使用的是地理编码。