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