Javascript jquery geocomplete-获取用户当前位置名称

Javascript jquery geocomplete-获取用户当前位置名称,javascript,jquery,google-maps,Javascript,Jquery,Google Maps,我们目前正在使用以下jquery插件对文本输入进行下拉式地理自动完成,效果良好: 但是,我们要做的是在用户键入/选择任何内容之前,在该输入框中显示当前默认位置。洛杉矶、悉尼或伦敦。类似于Facebook在地图标记旁边显示本地城市名称的方式(你可以点击地图标记将其更改为其他名称) 举例说明我的意思: (很抱歉,我无法在线粘贴图像,因为您将要合并 使用GooglePlacesAPI HTML-加载google places库: ... <script type="text/javascrip

我们目前正在使用以下jquery插件对文本输入进行下拉式地理自动完成,效果良好:

但是,我们要做的是在用户键入/选择任何内容之前,在该输入框中显示当前默认位置。洛杉矶、悉尼或伦敦。类似于Facebook在地图标记旁边显示本地城市名称的方式(你可以点击地图标记将其更改为其他名称)

举例说明我的意思: (很抱歉,我无法在线粘贴图像,因为您将要合并

使用GooglePlacesAPI

HTML-加载google places库:

...
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=places&sensor=true"></script>
<div id="google"></div>
...
我提到了地理编码Api,我对它有严重的Api限制问题,但作为参考,下面是代码:

不需要HTML

JS:


非常感谢Chris,我稍后会尝试一下。你能解释一下空Google div的用途吗?它应该是空的吗?这里使用:var service=new Google.maps.places.PlacesService(document.getElementById('Google'));这似乎返回的是街道编号/名称,而不是我们想要返回的本地城市/城镇名称。这可能吗?谢谢Chris!places api需要绑定dom元素,这是空div的唯一原因。places api需要绑定dom元素,这是空div的唯一原因。属性之一返回的是格式化的地址。这将包含城市。您可能需要稍微处理字符串以获得所需的准确信息。从技术上讲,地理编码api更适合于此,但我发现您可以快速达到api限制,我强烈建议不要使用它。我有一个疑问。我也使用过此插件。它是免费的吗?还是免费的每天有什么要求限制吗?你能告诉我吗?
...
if (navigator.geolocation) {
         navigator.geolocation.getCurrentPosition(addressToCode);
}

addressToCode = function (position,callback) {

        var service = new google.maps.places.PlacesService(document.getElementById('google'));
        var request = { query: new google.maps.LatLng(position.coords.latitude,position.coords.longitude) }
        service.textSearch(request, function (json, status) {
            if (status == google.maps.places.PlacesServiceStatus.OK) {
              //RESULTS -- DO SOMETHING HERE 
              json[0].name;
            } else {
                //alert("Geocode was not successful for the following reason: " + json.status);
            }
        });
};
...
  addressToCode = function (position) {
        var url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=" + position.coords.latitude + "," + position.coords.longitude + "&sensor=false";
        $.getJSON(url, function (json) {
            if (json.status == 'OK') {
                //DO SOMTHING HERE
                json.results[0].formatted_address;
            } else {
                //alert("Geocode was not successful for the following reason: " + json.status);
            }
        });
};