【问题标题】:jquery geocomplete - getting users current location namejquery geocomplete - 获取用户当前位置名称
【发布时间】:2014-01-07 04:33:12
【问题描述】:

我们目前正在使用以下 jquery 插件在文本输入上进行下拉地理自动完成,并且效果很好: http://ubilabs.github.io/geocomplete/

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

我的意思的例子:http://i.imgur.com/gt1TwLd.png (抱歉,我无法将图像内嵌为

使用 jquery geocomplete 插件或 Google Maps API 的地理编码和地点自动完成服务是否可以实现类似的功能?

谢谢!

【问题讨论】:

  • 我有一个问题。我也用过这个插件ubilabs.github.io/geocomplete。它是免费的吗?还是每天有请求限制?你能告诉我吗?

标签: javascript jquery google-maps


【解决方案1】:

你会想要合并https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition

使用 google 地方 api

HTML - 加载谷歌地方库:

...
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?libraries=places&sensor=true"></script>
<div id="google"></div>
...

Js:

...
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);
            }
        });
};
...

我提到了 GeoCoding Api,我遇到了严重的 api 限制问题,但作为参考,这里是代码:

不需要 HTML

JS:

  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);
            }
        });
};

【讨论】:

  • 非常感谢克里斯,我稍后再试。你能解释空谷歌 div 的用途吗?它应该是空的吗?在这里使用: var service = new google.maps.places.PlacesService(document.getElementById('google'));
  • 这似乎返回街道号码/名称,而不是当地城市/城镇名称——这是我们想要返回的。那可能吗?谢谢克里斯!
  • places api 需要绑定一个 dom 元素,这是空 div 的唯一原因。
  • places api 需要绑定一个 dom 元素,这是空 div 的唯一原因。返回的属性之一是格式化的地址。这将有城市。您可能需要稍微处理字符串以获得所需的确切信息。从技术上讲,GeoCoding api 对此效果更好,但我发现你可以快速达到 api 限制,我强烈建议不要使用它。
猜你喜欢
  • 2012-03-05
  • 1970-01-01
  • 2011-07-20
  • 2023-03-03
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多