Tho*_*son 5 javascript jquery google-maps map google-maps-api-3
我已成功设置Google Places API的自动填充功能
var input = document.getElementById('place_name');
var autocomplete = new google.maps.places.Autocomplete(input);
Run Code Online (Sandbox Code Playgroud)
但是这会自动填充文本框place_name,其地址如"ABC,Some Street,Washington,WA,United States".但我想在文本框中只填写地名,例如ABC.我怎么能这样做?
我试过了
google.maps.event.addListener(autocomplete, 'place_changed', function () {
var place = autocomplete.getPlace();
$('#place_name').val(place.name);
});
Run Code Online (Sandbox Code Playgroud)
但它没有做任何事情.请帮忙...
我现在意识到我完全误解了这个问题.我认为这是你想要消毒的下拉框的内容.要更改搜索框的内容,只需添加即可
input.value=input.value.split(',')[0];
Run Code Online (Sandbox Code Playgroud)
参加你的place_changed活动 - > http://jsfiddle.net/9RkM9/
这是谷歌地图在下拉框中组织结果(预测)的方式:

谷歌并不保证这种结构在未来都能保持稳定,但事实上他们实际上记录了我们现在可以信任的标记结构样张.
典型的.pac-item看起来像这样,在这里搜索"Los":
<div class="pac-item">
<span class="pac-item-query"><span class="pac-matched">Los</span>
Altos</span><span>CA, United States</span>
</div>
Run Code Online (Sandbox Code Playgroud)
这里有CA和United States现在,你想避免.任务只是减少.pac-item节点的内容,因此我们只保留所谓预测的名称部分.每次用户点击密钥时,自动填充都会搜索,因此您可以在自己的input keyup事件中否决自动生成的预测列表.需要稍微延迟,所以我们实际访问最新的预测列表,而不是前一个:
input.onkeyup = function(e) {
setTimeout(function() {
var places = document.querySelectorAll('.pac-item');
for (var i=0;i<places.length;i++) {
var place = places[i];
//get the icon
var pac_icon = place.querySelector('.pac-icon').outerHTML;
//get the mathed name only, including markup for precise match, loke "Los" in bold
var place_name_reduced = place.querySelector('.pac-item-query').outerHTML;
place.innerHTML = pac_icon + place_name_reduced;
}
}, 150);
}
Run Code Online (Sandbox Code Playgroud)
在这里看到它 - > http://jsfiddle.net/8SGvR/
| 归档时间: |
|
| 查看次数: |
3100 次 |
| 最近记录: |