我有以下情况。在网站上,用户根据Google自动填充功能提交公寓位置。他们从谷歌建议列表中选择一个城市,然后我将这个城市和国家(通过api)保存到数据库中。
其他用户也可以使用Google自动填充表格搜索该城市的商家信息。当用户使用不同语言时,会出现此问题。
对于前用户1在美国。当他提交他的列表我从谷歌收到国家"美国" 。
当用户2(居住在荷兰)使用谷歌自动填充搜索时,我会收到国家" Verenigde Staten" (美国在duch)。但是搜索算法将不起作用,因为提交的列表被保存为"美国"而不是" Verenigde Staten"。
有没有办法用用户语言显示建议列表但是用英语接收结果(所以我可以只使用英语保存和搜索)。也许翻译结果?
我知道我可以"阻止"英文的建议清单,但我想用这个作为最终措施。
这是我的代码
input = (document.getElementById('property_city_front'));
defaultBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(-90, -180),
new google.maps.LatLng(90, 180)
);
options = {
bounds: defaultBounds,
types: ['(cities)'],
};
componentForm = {
establishment: 'long_name',
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'long_name',
administrative_area_level_2: 'long_name',
country: 'long_name',
postal_code: 'short_name',
postal_code_prefix: 'short_name',
neighborhood: 'long_name',
};
if (document.getElementById('property_city_front')) {
autocomplete = new google.maps.places.Autocomplete(input, options);
google.maps.event.addListener(autocomplete, 'place_changed', function () {
place = autocomplete.getPlace();
fillInAddress(place);
});
}
根据建议我回复地方ID(用荷兰语自动完成)并查询PlacesService但我得到的结果仍然是荷兰语而不是英语。 这是代码
var request = {
placeId: 'ChIJOwg_06VPwokRYv534QaPC8g',
id: '7eae6a016a9c6f58e2044573fb8f14227b6e1f96',
language:'en'
};
map = new google.maps.Map(document.getElementById('searchmap'), {
zoom: 15,
scrollwheel: false
});
service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);
function callback(place, status) {
console.log(status);
console.log (place);
}
答案 0 :(得分:3)
这个问题很可能已经回答here。
简而言之,响应包含一个ID,对于两个查询都应该相同。 您可以使用此ID来标识用户正在查找的国家/地区。 根据文件:
id包含表示此位置的唯一稳定标识符。这个 标识符不能用于检索有关此地点的信息, 但可用于合并有关此地方的数据,并进行验证 跨越不同搜索的地方的身份。 ids可以 偶尔更改,建议将存储的ID替换为Place 与后来的Details请求中返回的id进行比较 相同的地方,并在必要时更新。
您可以使用引用查询Places API。每种语言的参考不同。您可以选择添加检索到的ID。