Google maps api 3 谷歌地图自动完成:只输出地址,不包括国家和城市
我使用自动完成地址输入。搜索仅限于一个城市,我得到如下输出: 罗西娅,莫斯科,列宁斯基省28号 如何隐藏“莫斯科罗西娅” 我的问题是:Google maps api 3 谷歌地图自动完成:只输出地址,不包括国家和城市,google-maps-api-3,Google Maps Api 3,我使用自动完成地址输入。搜索仅限于一个城市,我得到如下输出: 罗西娅,莫斯科,列宁斯基省28号 如何隐藏“莫斯科罗西娅” 我的问题是: function() { // Search bounds var p1 = new google.maps.LatLng(54.686534, 35.463867); var p2 = new google.maps.LatLng(56.926993, 39.506836); self.optio
function() {
// Search bounds
var p1 = new google.maps.LatLng(54.686534, 35.463867);
var p2 = new google.maps.LatLng(56.926993, 39.506836);
self.options = {
bounds : new google.maps.LatLngBounds(p1, p2),
componentRestrictions: {country: 'ru'},
};
var elements = document.querySelectorAll('.address');
for ( var i = 0; i < elements.length; i++) {
var autocomplete = new google.maps.places.Autocomplete(elements[i],
self.options);
}
function(){
//搜索边界
var p1=新的google.maps.LatLng(54.686534,35.463867);
var p2=新的google.maps.LatLng(56.926993,39.506836);
self.options={
边界:新的google.maps.LatLngBounds(p1,p2),
组件限制:{country:'ru'},
};
var elements=document.querySelectorAll('.address');
对于(var i=0;i
编辑
你不能。我有另一种说法,你只是在寻找一个城市。没有办法只打印出地址组件中的街道名称(我假设这是一个街道名称)
与所问内容相反 (cities)类型集合指示Place服务返回与
地区
或行政区域3
匹配的结果
结果你得到了散列,从中你可以得到你想要的部分:
google.maps.event.addListener(autocomplete, 'place_changed', function() {
var place = autocomplete.getPlace();
现在从“地方”你可以得到它
place.geometry.location.lat()
地址呢
place.address_components[0] or place.address_components[1] ...
取决于您想要获得的内容,您可以,但必须在两处替换输入字段的值。 例如: 在“更换地点”事件中,您可以执行以下操作:
placeResult = autocomplete.getPlace();
//This will get only the address
input.value = placeResult.name;
这会将searchtextfield中的值更改为street
第二位有点棘手:
input.addEventListener('blur', function(){
// timeoutfunction allows to force the autocomplete field to only display the street name.
if(placeResult){ setTimeout(function(){ input.value = placeResult.name; }, 1); }
我们必须这样做的原因是,如果您只为blur添加事件侦听器,google places将用完整地址填充输入字段,因此您必须“等待”google更新,然后通过等待几秒钟来强制更改
在没有设置超时功能的情况下尝试一下,您就会明白我的意思。内部位置\u更改设置超时功能:
var streetString = place.address_components[0] or place.address_components[1];
window.setTimeout(function() {
$('input').val(streetString);
}, 200);
这个解决方案对我很有效。我有一个非常类似的问题,确实是可以解决的。这在Angular 2项目中,但也应该适用于其他地方。我对结果中的机构进行筛选,只想显示结果中的名称并隐藏地址部分。这对我来说很有用,一个函数在您选择一个建议:
getAddress(place: Object) {
this.zone.run(() => {
this.establishment = place['name'];
});
其中,
zone
是注入构造函数中的NgZone组件,this.building
是绑定到[(NgModel)]的变量
在输入字段中。这里的文档说了以下内容,请尝试邻近:一个地方的简化地址,包括街道名称、街道号码和地点,但不包括省/州、邮政编码或国家。例如,谷歌的澳大利亚悉尼办事处的邻近值为皮尔蒙特皮拉马路5/48。
谢谢,我没有ried,但邻近性是Place属性,在我的例子中,autocomplete.getPlace()返回未定义。尚未找到解决方案。您可以从中推断,用您所需的信息构建自己的autocomplete小部件。我喜欢说“您不能”的坚定答案……最糟糕的是,这个答案被接受了。
var streetString = place.address_components[0] or place.address_components[1];
window.setTimeout(function() {
$('input').val(streetString);
}, 200);
getAddress(place: Object) {
this.zone.run(() => {
this.establishment = place['name'];
});