0
나는 함께 모으는 양식을 가지고 있으며 자동 입력란에 입력하려고합니다. 나는 95 %의 성공을 거두었지만 Lat/Long 코드를 자동으로 적절한 양식 필드에 채우는 데 어려움을 겪고 있습니다.자바 스크립트 - Google지도 - 자동 완성
여기
<div class="control-group">
<label class="control-label">Address *</label>
<div class="controls">
<input value="" placeholder="Enter the customers full address" class="form-control" id="autocomplete" type="text">
</div>
</div>
<div class="control-group">
<label class="control-label">House Number</label>
<div class="controls">
<input value="" class="form-control" id="street_number" disabled="true">
</div>
</div>
<div class="control-group">
<label class="control-label">Street Address</label>
<div class="controls">
<input value="" class="form-control" id="route" disabled="true">
</div>
</div>
<div class="control-group">
<label class="control-label">City</label>
<div class="controls">
<input value="" class="form-control" id="locality" disabled="true">
</div>
</div>
<div class="control-group">
<label class="control-label">State</label>
<div class="controls">
<input value="" class="form-control" id="administrative_area_level_1" disabled="true">
</div>
</div>
<div class="control-group">
<label class="control-label">Zipcode</label>
<div class="controls">
<input value="" class="form-control" id="postal_code" disabled="true">
</div>
</div>
<div class="control-group">
<label class="control-label">Country</label>
<div class="controls">
<input value="" class="form-control" id="country" disabled="true">
</div>
</div>
<div class="control-group">
<label class="control-label">Lat</label>
<div class="controls">
<input value="" class="form-control" id="LatLngBounds" disabled="true">
</div>
</div>
<div class="control-group">
<label class="control-label">Long</label>
<div class="controls">
<input value="" class="form-control" id="LatLngBounds" disabled="true">
</div>
</div>
그리고 여기 내 자바 스크립트 내 HTML입니다.
var placeSearch, autocomplete;
// Need to add Lat/Long to populate field.
var componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name',
};
function initAutocomplete() {
autocomplete = new google.maps.places.Autocomplete((document.getElementById('autocomplete')),{ types: ['geocode']});
autocomplete.addListener('place_changed', fillInAddress);
}
function fillInAddress() {
var place = autocomplete.getPlace();
for (var component in componentForm) {
document.getElementById(component).value = "";
document.getElementById(component).disabled = true;
}
for (var i = 0; i < place.address_components.length; i++) {
var addressType = place.address_components[i].types[0];
if (componentForm[addressType]) {
var val = place.address_components[i][componentForm[addressType]];
document.getElementById(addressType).value = val;
}
}
}
귀하의 HTML이 유효하지 않습니다. id = "LatLngBounds"의 두 요소가 있습니다. 그 요소를 어떻게 채우려고 했습니까? – geocodezip
나는 거기에 두었고 두 필드를 자동 채우기를 바랐다. 이것은 그것을 작동시키려는 시도 였지만, 그것은 그렇게하지 못했습니다. 방금 내가 가지고 있던 것을 질문에 직접 복사했습니다. @geocodezip – Kray
실제로 https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-addressform의 데모가 lat lng을 전파하지 않았습니다. Lat Lng 쌍을 가져 오려면 PlaceResult.geometry 객체를 구문 분석해야합니다. https://developers.google.com/maps/documentation/javascript/reference#PlaceResult – kaskader