there is a script:
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAgD5jrmV7TZa1AWIKaRTzrjluLSRVph5E&libraries=places&callback=initMap"></script> $(function() { $('#typeCategoryBlock').on('change', '#selecttypeCategory', function () { var $this = $(this), typeCategory_id = this.value; if(typeCategory_id == '0') { $('#fieldsAdvert').remove(); return false; } $.ajax({ url: 'index.php?route=ajax/getFielsCategoryList', data: { id_cat: $('#categoryIdInput').val(), lang: <?=$_SESSION['lang_id']?> }, type: 'POST', success: function(data) { $('#fieldsAdvert').remove(); if (data != '') { var $fieldsAdvert = $('<div id="fieldsAdvert"></div>'); $.map(data, function(v) { switch (v.type) { case 'text': $('<input/>', { id: v.id_style, class: v.class_style, data_id: v.id, type: v.type, name: v.name, value: v.field_value, placeholder: v.placeholder }).appendTo($fieldsAdvert); var autocomplete, marker, infowindow, map; function initMap() { var inputs = document.querySelector('#google_map'); autocomplete = new google.maps.places.Autocomplete(inputs); google.maps.event.addListener(autocomplete,'place_changed',function() { var place = autocomplete.getPlace(); if(!place.geometry) { alert('Error'); } var city = ''; var region = ''; var country = ''; var tmp = ''; place.address_components.forEach(function(item) { tmp = item.long_name; if(item.types) { item.types.forEach(function(t) { switch(t) { case 'administrative_area_level_1' : case 'administrative_area_level_2' : region = tmp; break; case 'country' : country = tmp; break; case 'postal_town' : case 'locality' : city = tmp; break; } }); } }); document.getElementById('city').value = city; document.getElementById('region').value = region; document.getElementById('country').value = country; }); } break; case 'textarea': break; case 'password': $('<input/>', { id: v.id_style, class: v.class_style, type: 'password', name: v.name, value: v.field_value, placeholder: v.placeholder }).appendTo($fieldsAdvert); break; case 'select': var myselect = $('<select/>', { id: v.id_style, name: v.name}); var items = v.field_value.split(', '); //Наполняем список $('<option/>', { val: '0', text: v.placeholder }).appendTo(myselect); $.each(items,function(index, svalue) { index++; $('<option/>', { val: index+'_'+svalue, text: svalue }).appendTo(myselect); }); $fieldsAdvert.append(myselect); break; case 'time': break; case 'date': break; case 'dateTime': break; case 'checkBox': var mycheckBoxdiv = $('<div/>', { id: 'advertCheckBox' }).appendTo($fieldsAdvert); var items = v.field_value.split(', '); $.each(items, function(i,item) { i++; $('<label/>').append( $('<input/>', { type: 'checkbox', name: 'mycheckbox', val: i+'_'+item }) ).append(item).appendTo(myradiodiv); }); break; case 'radio': var myradiodiv = $('<div/>', { id: v.name }).appendTo($fieldsAdvert); var items = v.field_value.split(', '); $.each(items, function(i,item) { i++; $('<label/>').append( $('<input/>', { type: v.type, name: v.name, val: i+'_'+item }) ).append(item).appendTo(myradiodiv); }); break; case 'hidden': break; default: return 'Type of field not found'; } }); $('#formElementsBlock').html($fieldsAdvert); } } }); }); }); This code successfully generates fields, but I need this code to work:
var autocomplete, marker, infowindow, map; function initMap() { var inputs = document.querySelector('#google_map'); autocomplete = new google.maps.places.Autocomplete(inputs); google.maps.event.addListener(autocomplete,'place_changed',function() { var place = autocomplete.getPlace(); if(!place.geometry) { alert('Error'); } var city = ''; var region = ''; var country = ''; var tmp = ''; place.address_components.forEach(function(item) { tmp = item.long_name; if(item.types) { item.types.forEach(function(t) { switch(t) { case 'administrative_area_level_1' : case 'administrative_area_level_2' : region = tmp; break; case 'country' : country = tmp; break; case 'postal_town' : case 'locality' : city = tmp; break; } }); } }); document.getElementById('city').value = city; document.getElementById('region').value = region; document.getElementById('country').value = country; }); } to auto-detect the address (from google) but