谷歌Javascript API V3将搜索类型= ['geocode']返回ZERO_RESULTS

时间:2011-08-24 16:14:26

标签: google-maps google-maps-api-3

我遇到谷歌搜索问题。如果我选择类型:['geocode']我得不到任何结果(ZERO_RESULTS),无论搜索词是什么。我究竟做错了什么?这是我的代码片段:

        ...
        var params = {
            name: searchTerm, //search Term is for example 'lon'
            bounds: map.getBounds(),
            types: ['geocode']
         }

        var service = new google.maps.places.PlacesService(map);
        service.search(params, function (results, status) {
                alert(status); - gives ZERO_RESULTS
         }
         ...

更新

我希望它的行为与Javascript相同AOI放置自动完成功能。为了得到相同的结果。我以为他们正在查询相同的数据?

var input = document.getElementById('location');
var options = {
    bounds: map.getBounds(),
    types: ['geocode']

};
autocomplete = new google.maps.places.Autocomplete(input, options);

google.maps.event.addListener(autocomplete, 'place_changed', function() {

.... 这个给了我很好的结果。 (原因我没有在第一个解决方案中使用自动完成方法是因为我无法设置在输入(在搜索字段中)时自动选择自动完成列表中的第一个项目 - 如果您知道答案,请帮助:)

3 个答案:

答案 0 :(得分:0)

至少目前,最好不要假设Google商家信息中包含大量数据,或者数据的分类很精细。 Google地方信息很可能很少或根本没有geocode类型的地方供您查找。

由于types是可选的,因此将其删除,您可能会获得结果。

更新:关于已添加到问题中的自动填充与地方搜索内容:我没有使用自动填充,但我认为它不应该给您相同的结果。地方信息搜索正在尝试查找与搜索字词XXXXX匹配的内容。自动完成功能正在尝试预测给定的子字符串XXXXXX您可能尝试键入的内容。因此,它可能会返回更多(并且不同,并且在许多情况下不太相关)的结果。所以你所看到的(自动完成的结果更多)不会让我感到异常。

答案 1 :(得分:0)

我发现通过删除“类型”参数,我得到了更多的地方。我正在使用地方自动填充功能,它肯定会为我提供更多没有类型的选项。

我只是捕获回车键并停止它,以防止用户意外提交表单。不是你想要的,但它对我有用。

        $("#LatLongSearch").keypress(function (event) {
            if (event.which == 13) {    // make enter key just search map and stop it from submitting form
                event.preventDefault();
            } 
        })

答案 2 :(得分:0)

试试这个

$('#searchform').keypress(function(e) {
                if (e.which == 13) {
                e.preventDefault();
               google.maps.event.addListener(autocomplete, 'place_changed', function() {
                 fillInAddress();
                $('#yourform').submit();
        }); } });

它适合我