我正在尝试基于Google地图构建应用,并且我创建了一个自动填充字段,允许最终用户手动输入他的地址。
此外,我的应用程序要求行程的起始地址位于管理员边界预定义的范围内。
我喜欢做的是,当最终用户尝试输入起始行程地址,并且地址超出边界时,清除自动填充字段。
不幸的是,我无法清除这个领域。当控制台显示该字段的值为空时,浏览器仍然包含最后输入的地址。
我使用的代码如下:
// Build a new AutoComplete object
autocomplete = new google.maps.places.Autocomplete(
$addressField[0], // Set the address field
{
types : [
'geocode'
],
bounds : map.getBounds()
}
);
// Add an event listener for autocomplete object
google.maps.event.addListener(
autocomplete,
'place_changed', // And track the change event
function()
{
var place = autocomplete.getPlace();
var latLng = new google.maps.LatLng(place.geometry.location.lat(), place.geometry.location.lng());
var isWithinPolygon = areaPolygon.containsLatLng(latLng);
if(!isWithinPolygon)
{
// NOTE : I have also try the .val() method but with no effect.
$addressField.attr('value', '').attr('data-lat', '').attr('data-lng', '');
console.warn('This address it is not located within the area boundaries');
}
else
{
$addressField.attr('data-lat', place.geometry.location.lat()).attr('data-lng', place.geometry.location.lng());
}
}
);
最后,这是我的应用程序和控制台上的屏幕截图:
应用截图
元素检查
控制台消息
有人可以帮我解决这个问题吗?
答案 0 :(得分:4)
另外清除自动填充的place
- 属性:
autocomplete.set('place',void(0));