Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在ASP.NET上实现Google Places文本框预测?_Javascript_Jquery_Html_Asp.net_Google Maps - Fatal编程技术网

Javascript 如何在ASP.NET上实现Google Places文本框预测?

Javascript 如何在ASP.NET上实现Google Places文本框预测?,javascript,jquery,html,asp.net,google-maps,Javascript,Jquery,Html,Asp.net,Google Maps,我正在创建一个网站,其中我正在使用母版页,我想在我的内容页中使用文本框预测。但这一预测并不奏效。但是我需要使用ASP控件而不是HTML来执行此操作。 我的代码是: google.maps.event.addDomListener(窗口'load',函数(){ var places=new google.maps.places.Autocomplete(document.getElementById('fromtbx'); google.maps.event.addListener(place

我正在创建一个网站,其中我正在使用母版页,我想在我的内容页中使用文本框预测。但这一预测并不奏效。但是我需要使用ASP控件而不是HTML来执行此操作。 我的代码是:


google.maps.event.addDomListener(窗口'load',函数(){
var places=new google.maps.places.Autocomplete(document.getElementById('fromtbx');
google.maps.event.addListener(places,'place_changed',函数(){
var place=places.getPlace();
var address=place.formatted\u地址;
var latitude=place.geometry.location.lat();
var longitude=place.geometry.location.lng();
var mesg=“地址:”+地址;
mesg+=“\n纬度:”+纬度;
mesg+=“\n长度:”+经度;
警报(mesg);
});
});


从…起 到
有两件事要做:

  • 你确认调用谷歌API了吗?使用IE开发者工具(按F12键)或使用Fiddler查看调用
  • 但是,如果#1工作正常,最可能的问题是您正在执行GetElementById,并且由于您有母版页,因此该名称可能被扩展为类似$masterpage$control$fromtextbox的内容。这样做是为了避免命名冲突

  • 右键单击页面,查看源代码并确认情况属实。如果是,请不要使用该名称,而是使用不同的选择器。

    尝试此操作,这将在textbox中为您提供所有地址元素,然后您可以根据需要调用use并隐藏这些文本框

    <html xmlns="http://www.w3.org/1999/xhtml">
        <head runat="server">
    <title>Place Autocomplete Address Form</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #map {
        height: 100%;
      }
    </style>
    <link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">
    <style>
      #locationField, #controls {
        position: relative;
        width: 480px;
      }
      #autocomplete {
        position: absolute;
        top: 0px;
        left: 0px;
        width: 99%;
      }
      .label {
        text-align: right;
        font-weight: bold;
        width: 100px;
        color: #303030;
      }
      #address {
        border: 1px solid #000090;
        background-color: #f0f0ff;
        width: 480px;
        padding-right: 2px;
      }
      #address td {
        font-size: 10pt;
      }
      .field {
        width: 99%;
      }
      .slimField {
        width: 80px;
      }
      .wideField {
        width: 200px;
      }
      #locationField {
        height: 20px;
        margin-bottom: 2px;
      }
    </style>
      </head>
      <body>
      <form id="form1" runat="server">
      <h1> Address Lookup </h1>
    
    
    <div id="locationField">
      <input id="autocomplete" placeholder="Enter your address"
             onFocus="geolocate()" type="text"></input>
    </div>
    
    <table id="address">
      <tr>
        <td class="label">Street address</td>
        <td class="slimField"><input class="field" id="street_number"
              disabled="true"></input></td>
        <td class="wideField" colspan="2"><input class="field" id="route"
              disabled="true"></input></td>
      </tr>
      <tr>
        <td class="label">City</td>
        <td class="wideField" colspan="3"><input class="field" id="locality"
              disabled="true"></input></td>
      </tr>
      <tr>
        <td class="label">State</td>
        <td class="slimField"><input class="field"
              id="administrative_area_level_1" disabled="true"></input></td>
        <td class="label">Zip code</td>
        <td class="wideField"><input class="field" id="postal_code"
              disabled="true"></input></td>
      </tr>
      <tr>
        <td class="label">Country</td>
        <td class="wideField" colspan="3"><input class="field"
              id="country" disabled="true"></input></td>
      </tr>
    </table>
    
    <script>
        // This example displays an address form, using the autocomplete feature
        // of the Google Places API to help users fill in the information.
    
        // This example requires the Places library. Include the libraries=places
        // parameter when you first load the API. For example:
        // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places">
    
        var placeSearch, autocomplete;
        var componentForm = {
            street_number: 'short_name',
            route: 'long_name',
            locality: 'long_name',
            administrative_area_level_1: 'short_name',
            country: 'long_name',
            postal_code: 'short_name'
        };
    
        function initAutocomplete() {
            // Create the autocomplete object, restricting the search to geographical
            // location types.
            autocomplete = new google.maps.places.Autocomplete(
            /** @type {!HTMLInputElement} */(document.getElementById('autocomplete')),
            { types: ['geocode'] });
    
            // When the user selects an address from the dropdown, populate the address
            // fields in the form.
            autocomplete.addListener('place_changed', fillInAddress);
        }
    
        function fillInAddress() {
            // Get the place details from the autocomplete object.
            var place = autocomplete.getPlace();
    
            for (var component in componentForm) {
                document.getElementById(component).value = '';
                document.getElementById(component).disabled = false;
            }
    
            // Get each component of the address from the place details
            // and fill the corresponding field on the form.
            for (var i = 0; i < place.address_components.length; i++) {
                var addressType = place.address_components[i].types[0];
                if (componentForm[addressType]) {
                    var val = place.address_components[i][componentForm[addressType]];
                    document.getElementById(addressType).value = val;
                }
            }
        }
    
        // Bias the autocomplete object to the user's geographical location,
        // as supplied by the browser's 'navigator.geolocation' object.
        function geolocate() {
            if (navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(function (position) {
                    var geolocation = {
                        lat: position.coords.latitude,
                        lng: position.coords.longitude
                    };
                    var circle = new google.maps.Circle({
                        center: geolocation,
                        radius: position.coords.accuracy
                    });
                    autocomplete.setBounds(circle.getBounds());
                });
            }
        }
    </script>
    <script src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places&callback=initAutocomplete"
        async defer></script>
    
    </form>
    
    
    放置自动完成的地址表单
    html,正文{
    身高:100%;
    保证金:0;
    填充:0;
    }
    #地图{
    身高:100%;
    }
    #位置字段,#控件{
    位置:相对位置;
    宽度:480px;
    }
    #自动完成{
    位置:绝对位置;
    顶部:0px;
    左:0px;
    宽度:99%;
    }
    .标签{
    文本对齐:右对齐;
    字体大小:粗体;
    宽度:100px;
    颜色:303030;
    }
    #地址{
    边框:1px实心#000090;
    背景色:#f0ff;
    宽度:480px;
    右侧填充:2px;
    }
    #地址:td{
    字号:10pt;
    }
    .场{
    宽度:99%;
    }
    斯莱姆菲尔德先生{
    宽度:80px;
    }
    .威德菲尔德{
    宽度:200px;
    }
    #位置场{
    高度:20px;
    边缘底部:2px;
    }
    地址查找
    街道地址
    城市
    陈述
    邮政编码
    国家
    //此示例使用自动完成功能显示地址表单
    //谷歌的PlacesAPI帮助用户填写信息。
    //此示例需要Places库。包括图书馆=地方
    //第一次加载API时的参数。例如:
    // 
    var placeSearch,自动完成;
    变量组件形式={
    街道编号:“短名称”,
    路线:'long_name',
    地点:'long_name',
    行政区域级别1:“短名称”,
    国家:'long_name',
    邮政编码:“短名称”
    };
    函数initAutocomplete(){
    //创建自动完成对象,将搜索限制为地理位置
    //位置类型。
    autocomplete=new google.maps.places.autocomplete(
    /**@type{!HTMLInputElement}*/(document.getElementById('autocomplete'),
    {类型:['geocode']});
    //当用户从下拉列表中选择地址时,填充该地址
    //表单中的字段。
    autocomplete.addListener('place\u changed',fillInAddress);
    }
    函数fillInAddress(){
    //从自动完成对象获取位置详细信息。
    var place=autocomplete.getPlace();
    for(componentForm中的var组件){
    document.getElementById(组件).value='';
    document.getElementById(组件).disabled=false;
    }
    //从place details中获取地址的每个组件
    //并在表单上填写相应的字段。
    对于(变量i=0;i

    几秒钟后,在输入的文本框中出现“错误…”