Bias谷歌地图使用位置和半径自动完成

时间:2014-05-31 14:16:58

标签: javascript google-maps geolocation

我试图根据位置和半径(https://developers.google.com/places/webservice/autocomplete#location_biasing)偏向google.maps.places.Autocomplete。以下内容返回结果,但是基于客户端的IP而不是我指定的位置。 Google地图自动填充功能如何正确偏向地理位置? http://jsbin.com/nazufozeyu/1/

var autocomplete = new google.maps.places.Autocomplete(
  document.getElementById('address'), {
    types: ['geocode'],
    radius: 1000,
    location:[47.64864,-122.348927]
  }
);

2 个答案:

答案 0 :(得分:3)

我确信这可以做得更好,但以下方法可行。 http://jsbin.com/vetayoreto/1/

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>google.maps.places.Autocomplete</title>  
        <style type="text/css">
            input{width:600px; display:block;}
        </style> 
        <script type="text/javascript" src="//maps.googleapis.com/maps/api/js?v=3.exp&amp;sensor=false&amp;libraries=places"></script>
    </head>
    <body>
        <input id="input" type="text" value="" />
        <script>
            var center = new google.maps.LatLng(40.7,-74);
            var circle = new google.maps.Circle({
                center: center,
                radius: 10000
            });
            var autocomplete5 = new google.maps.places.Autocomplete(
                document.getElementById('input'),
                {
                    types: ['geocode']
                }
            );
            autocomplete5.setBounds(circle.getBounds());
        </script>
    </body> 
</html> 

答案 1 :(得分:1)

因此,在检查API之后,您可能会忽略您提供的位置。您可以选择执行的操作,但需要在LatLngBounds类型的选项中提供bounds属性。请参阅自动填充选项API:https://developers.google.com/maps/documentation/javascript/reference#AutocompleteOptions

您可以提供圆形,矩形,折线等,然后从中拉出边界。无论你如何 ,你需要提供一个搜索范围,你不能只提供一个lat-long点。 @ user1032531提供了一个很好的例子,说明如何使用圆圈。

如果您想要搜索某个城市/国家/地区,则可以使用地理编码API:https://developers.google.com/maps/documentation/geocoding/

按照以下方式调用API:https://maps.googleapis.com/maps/api/geocode/json?address=Toledo&key=API_KEY并且您将获得一些具有&#34;边界&#34;的JSON。键。获取您的boundbox,并将其传递给places API调用。