在同一页面上添加多个Google商家信息实例

 兔帽儿 发布于 2023-02-12 15:26

我希望在同一页面上包含2个Google地方信息自动填写实例.希望为拾取位置设置输入,为Dropoff位置设置输入.

我假设它与输入元素的ID有关,但即使我将其更改为类,它仍然无法正常工作.

这是我目前所拥有的,它适用于第一个字段,但我无法弄清楚如何让第二个输入字段自动完成,或者甚至显示除了普通输入文本字段之外的任何其他迹象.

任何帮助是极大的赞赏!



HTML


codeKonami.. 16

一种更有活力的方法.您无需初始化元素ID.

var inputs = document.getElementsByClassName('query');

var options = {
  types: ['(cities)'],
  componentRestrictions: {country: 'fr'}
};

var autocompletes = [];

for (var i = 0; i < inputs.length; i++) {
  var autocomplete = new google.maps.places.Autocomplete(inputs[i], options);
  autocomplete.inputId = inputs[i].id;
  autocomplete.addListener('place_changed', fillIn);
  autocompletes.push(autocomplete);
}

function fillIn() {
  console.log(this.inputId);
  var place = this.getPlace();
  console.log(place. address_components[0].long_name);
}




3 个回答
  • 这简直就是问题.
    您使用两个ID"自动完成"和"自动完成2",
    但仅初始化ID"自动完成".
    尝试将此代码添加到initialize().

    使用Javascript

    autocomplete2 = new google.maps.places.Autocomplete(document.getElementById('autocomplete2'), { types: [ 'geocode' ] });
    google.maps.event.addListener(autocomplete2, 'place_changed', function() {
      fillInAddress();
    });
    

    2023-02-12 15:28 回答
  • 这是我的解决方案,但需要jQuery

    var autocomplete = {};
    		var autocompletesWraps = ['test', 'test2'];
    
    		var test_form = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' };
    		var test2_form = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' };
    
    		function initialize() {
    
    			$.each(autocompletesWraps, function(index, name) {
    			
    				if($('#'+name).length == 0) {
    					return;
    				}
    
    				autocomplete[name] = new google.maps.places.Autocomplete($('#'+name+' .autocomplete')[0], { types: ['geocode'] });
    					
    				google.maps.event.addListener(autocomplete[name], 'place_changed', function() {
    					
    					var place = autocomplete[name].getPlace();
    					var form = eval(name+'_form');
    
    					for (var component in form) {
    						$('#'+name+' .'+component).val('');
    						$('#'+name+' .'+component).attr('disabled', false);
    					}
    					
    					for (var i = 0; i < place.address_components.length; i++) {
    						var addressType = place.address_components[i].types[0];
    						if (typeof form[addressType] !== 'undefined') {
    						  var val = place.address_components[i][form[addressType]];
    						  $('#'+name+' .'+addressType).val(val);
    						}
    					}
    				});
    			});
    		}
    html, body, #map-canvas {
            height: 100%;
            margin: 0px;
            padding: 0px
          }
    	   #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;
          }
          table {
            border: 1px solid #000090;
            background-color: #f0f0ff;
            width: 480px;
            padding-right: 2px;
          }
          table td {
            font-size: 10pt;
          }
          .field {
            width: 99%;
          }
          .slimField {
            width: 80px;
          }
          .wideField {
            width: 200px;
          }
          #locationField {
            height: 20px;
            margin-bottom: 2px;
          }
    <!DOCTYPE html>
    <html>
      <head>
        <title>Place Autocomplete Address Form</title>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
        <meta charset="utf-8">
    	<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
        <link type="text/css" rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">
        <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places"></script>
      </head>
    
      <body onload="initialize()">
      
      <div id="test">
        
        <input class="autocomplete" placeholder="Enter your address" type="text"></input>
    
        <table>
          <tr>
            <td class="label">Street address</td>
            <td class="slimField"><input class="field street_number" disabled="true"></input></td>
            <td class="wideField" colspan="2"><input class="field route" disabled="true"></input></td>
          </tr>
          <tr>
            <td class="label">City</td>
            <td class="wideField" colspan="3"><input class="field locality" disabled="true"></input></td>
          </tr>
          <tr>
            <td class="label">State</td>
            <td class="slimField"><input class="field administrative_area_level_1" disabled="true"></input></td>
            <td class="label">Zip code</td>
            <td class="wideField"><input class="field postal_code" disabled="true"></input></td>
          </tr>
          <tr>
            <td class="label">Country</td>
            <td class="wideField" colspan="3"><input class="field country" disabled="true"></input></td>
          </tr>
        </table>
    </div>
    
    <br /><br />
    	
    <div id="test2">	
    	
        <input class="autocomplete" placeholder="Enter your address" type="text"></input>
        
    	<table>
          <tr>
            <td class="label">Street address</td>
            <td class="slimField"><input class="field street_number" disabled="true"></input></td>
            <td class="wideField" colspan="2"><input class="field route" disabled="true"></input></td>
          </tr>
          <tr>
            <td class="label">City</td>
            <td class="wideField" colspan="3"><input class="field locality" disabled="true"></input></td>
          </tr>
          <tr>
            <td class="label">State</td>
            <td class="slimField"><input class="field administrative_area_level_1" disabled="true"></input></td>
            <td class="label">Zip code</td>
            <td class="wideField"><input class="field postal_code" disabled="true"></input></td>
          </tr>
          <tr>
            <td class="label">Country</td>
            <td class="wideField" colspan="3"><input class="field country" disabled="true"></input></td>
          </tr>
        </table>
    </div>
    
    </body>
    </html>
    2023-02-12 15:28 回答
  • 一种更有活力的方法.您无需初始化元素ID.

    var inputs = document.getElementsByClassName('query');
    
    var options = {
      types: ['(cities)'],
      componentRestrictions: {country: 'fr'}
    };
    
    var autocompletes = [];
    
    for (var i = 0; i < inputs.length; i++) {
      var autocomplete = new google.maps.places.Autocomplete(inputs[i], options);
      autocomplete.inputId = inputs[i].id;
      autocomplete.addListener('place_changed', fillIn);
      autocompletes.push(autocomplete);
    }
    
    function fillIn() {
      console.log(this.inputId);
      var place = this.getPlace();
      console.log(place. address_components[0].long_name);
    }
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places&key=AIzaSyC0Laj_Wk3kjFM-S8mYljc-WWCeesoDA_M"></script>
    
    <input id="query-0" class="query" type="text"/>
    <input id="query-1" class="query" type="text"/>
    <input id="query-2" class="query" type="text"/>
    2023-02-12 15:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有