尝试让这段代码正常工作,但“postal_town”似乎不会因某些原因而起作用。任何人吗?
“postal_town”在瑞典很常见,因为它等于城市。
为了使自动完成功能起作用,这是关键:)
我试图添加它但是对于这段代码,它只是不起作用。 代码将在Shopify中输入,这是代码某些部分的原因。
if (window.location.href.indexOf('checkout') > -1) {
window.onload = function() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = "https://maps.googleapis.com/maps/api/js?key=TO-BE-REPLACED-WITH-API&libraries=places";
script.async = "true";
script.defer = "defer";
document.body.appendChild(script);
setTimeout(initAutocomplete, 2000);
var lookup = {
"street_number": document.getElementById('checkout_shipping_address_address1'),
"route": document.getElementById('checkout_shipping_address_address1'),
"fullAddress": document.getElementById('checkout_shipping_address_address1'),
"locality": document.getElementById('checkout_shipping_address_city'),
"neighborhood": document.getElementById('checkout_shipping_address_city'),
"administrative_area_level_1": document.getElementById('checkout_shipping_address_province'),
"country": document.getElementById('checkout_shipping_address_country'),
"postal_code": document.getElementById('checkout_shipping_address_zip')
};
var placeSearch;
var autocomplete;
var componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'long_name',
country: 'long_name',
neighborhood: 'long_name',
postal_code: 'short_name'
};
function initAutocomplete() {
document.getElementById('checkout_shipping_address_address1').onFocus = "geolocate()";
autocomplete = new google.maps.places.Autocomplete(
(document.getElementById('checkout_shipping_address_address1')), { types: ['geocode'] });
autocomplete.addListener('place_changed', fillInAddress);
}
function fillInAddress() {
var place = autocomplete.getPlace();
for (var component in componentForm) {
lookup[component].value = '';
}
var fullAddress = '';
for (var i = 0; i < place.address_components.length; i++) {
var addressType = place.address_components[i].types[0];
var val = place.address_components[i][componentForm[addressType]];
if (componentForm[addressType]) {
switch (addressType) {
case 'street_number':
fullAddress = val + fullAddress;
break;
case 'route':
fullAddress = fullAddress + ' ';
fullAddress = fullAddress + val;
break;
case 'neighborhood':
lookup.neighborhood.value = val;
break;
case 'locality':
lookup.locality.value = val;
break;
case 'administrative_area_level_1':
lookup.administrative_area_level_1.value = val;
break;
case 'country':
lookup.country.value = val;
break;
case 'postal_code':
lookup.postal_code.value = val;
break;
}
}
}
lookup.fullAddress.value = fullAddress;
}
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());
});
}
}
};
}