0

google.maps.event.addListener()을 사용하여 사용자 주소를 얻을 수있는 작은 함수를 작성했습니다. 다음은 jsFiddle입니다.은 google.maps.event.addListener()의 주소 만 표시합니다.

사용자가 입력을 마치고 street 입력란에서 벗어난 경우를 제외하고는 모두 내가 원하는 내용입니다. 주소는 input입니다.

now

을하지만 나는 이런 식으로 할 것을 권장합니다 : 순간

그것은 다음과 같습니다

enter image description here

감사를 이미 도움을. 건배.

답변

3

는 streetAddress

setTimeout(function(){$('#address').val(streetAddress);},50); 
2

위의 솔루션은 개별 주소 필드를 자동 완성 좋은 작품을 적용하는 짧은 지연을 사용합니다. 여기에 결과를 바이어스하는 옵션이있는 구현이 있지만 경계를 사용하여 자동 완성 필드의 결과를 바이어스하는 데 문제가 있습니다. 여기 내 jsFiddle입니다.

var defaultBounds = new google.maps.LatLngBounds(
    new google.maps.LatLng(33.89028890,-117.5617340), 
    new google.maps.LatLng(33.7706850,-117.6639850) 
); 

var updateAddress = { 
    autocomplete: new google.maps.places.Autocomplete($("#address")[0], { 
     bounds: defaultBounds, 
     types: ['geocode'], 
     componentRestrictions: {country: 'us'} 
    }),    
    event: function(){ 
     var self = this;  
     google.maps.event.addListener(self.autocomplete, 'place_changed', function() { 
      var place = self.autocomplete.getPlace(), 
       address = place.address_components, 
       streetAddress = '', 
       suburb = '', 
       state = '', 
       zip = '', 
       country = ''; 

      for (var i = 0; i < address.length; i++) { 
       var addressType = address[i].types[0]; 

       if (addressType == 'subpremise') { 
        streetAddress += address[i].long_name + '/'; 
       } 
       if (addressType == 'street_number') { 
        streetAddress += address[i].long_name + ' '; 
       } 
       if (address[i].types[0] == 'route') { 
        streetAddress += address[i].long_name; 
       } 
       if (addressType == 'locality') { 
        suburb = address[i].long_name; 
       } 
       if (addressType == 'administrative_area_level_1') { 
        state = address[i].long_name; 
       } 
       if (addressType == 'postal_code') { 
        zip = address[i].long_name; 
       } 
       if (addressType == 'country') { 
        country = address[i].long_name; 
       } 
      } 

      // update the textboxes 
      setTimeout(function(){$('#address').val(streetAddress);},50); 
      $('#suburb').val(suburb); 
      $('#state').val(state); 
      $('#zip').val(zip); 
     }); 

    } 
}; 

updateAddress.event(); 
관련 문제