i need check if given address full or not. i'm using google maps api v3 autocomplete in 1 of fields , when address selected, 3 other fields populated. fields: city, street name, house.
when select full address, works fine. if i, example, not enter house number, wrong results. city becomes parish, street becomes city, house becomes street.
question is: how check if given address full or how select required address components not [0], [1] etc, ['city'], ['street'] etc?
code:
<script> function initialize() { var mapoptions = { center: new google.maps.latlng(55.169438, 23.881275), zoom: 7, maptypeid: google.maps.maptypeid.roadmap }; var map = new google.maps.map(document.getelementbyid('map_canvas'), mapoptions); var input = document.getelementbyid('searchmap'); var autocomplete = new google.maps.places.autocomplete(input); autocomplete.bindto('bounds', map); var infowindow = new google.maps.infowindow(); var marker = new google.maps.marker({ map: map }); google.maps.event.addlistener(autocomplete, 'place_changed', function () { infowindow.close(); marker.setvisible(false); var place = autocomplete.getplace(); if (!place.geometry) { $("#cityname").attr("readonly", false); $("#streetname").attr("readonly", false); $("#house").attr("readonly", false); $("#externalid").attr("readonly", false); return; } $("#cityname").attr("readonly", true); $("#streetname").attr("readonly", true); $("#house").attr("readonly", true); $("#externalid").attr("readonly", true); if (place.geometry.viewport) { map.fitbounds(place.geometry.viewport); } else { map.setcenter(place.geometry.location); map.setzoom(17); } var image = { url: place.icon, size: new google.maps.size(71, 71), origin: new google.maps.point(0, 0), anchor: new google.maps.point(17, 34), scaledsize: new google.maps.size(35, 35) }; marker.seticon(image); marker.setposition(place.geometry.location); marker.setvisible(true); var address = ''; if (place.address_components) { address = [ (place.address_components[0] && place.address_components[0].short_name || ''), (place.address_components[1] && place.address_components[1].short_name || ''), (place.address_components[2] && place.address_components[2].short_name || '') ].join(' '); $('#house').val(place.address_components[0] && place.address_components[0].short_name || ''); $('#streetname').val(place.address_components[1] && place.address_components[1].short_name || ''); $('#cityname').val(place.address_components[2] && place.address_components[2].short_name || ''); $('#externalid').val(place.id); } infowindow.setcontent('<div><strong>' + place.name + '</strong><br>' + address); infowindow.open(map, marker); }); } google.maps.event.adddomlistener(window, 'load', initialize); </script>
Comments
Post a Comment