【问题标题】:give the lat and lng,get the city of radius x mile给出 lat 和 lng,得到半径 x 英里的城市
【发布时间】:2016-02-24 07:39:29
【问题描述】:

当使用 lat 和 lng 时,我应该给出美国的城市和州。 尝试使用google map place api,但它没有place type

在谷歌搜索,得到一些答案:

1.创建城市数据的数据库,使用sql计算距离。但是我没有得到任何准确的数据,有些数据不是免费的。

2.使用第三个数据库geoNames,获取数据,但我担心网站限制请求数。 那你有什么答案吗,求助

【问题讨论】:

  • 您可能想使用地理编码器。看这个小提琴的例子:jsfiddle.net/upsidown/5S3ce 并观察控制台的结果。如果您在获取所需信息时遇到问题,请使用显示您尝试过的代码的代码打开一个新问题。

标签: google-maps google-maps-api-3 radius geonames city


【解决方案1】:

如果您有 lat 和 lng,最好调用 Geocoder.geocode。 一旦你得到正确的答案,你可以检查 address_componenets 类型为“administrative_area_level_n”

var latlng = new google.maps.LatLng(lat, lng);
        var geocoder = new google.maps.Geocoder();
        geocoder.geocode({ 'latLng': latlng }, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                if (results[1]) {
                    for (var i = 0; i < results[0].address_components.length; i++) {
                        for (var b = 0; b < results[0].address_components[i].types.length; b++) {
                            if (results[0].address_components[i].types[b] == "administrative_area_level_2") {
                                var city = results[0].address_components[i];
                            }
                        }
                    }
                }
            }

【讨论】:

  • 请发布完整且有效的代码并解释其作用。
  • @MrUpsidown,对我来说看起来不言自明,但根据您的要求添加(为了完整起见)
  • 它可能也适合您和其他人。但是这里的许多人都是初学者,因此发布完整的代码总是更好。感谢您更新代码。
猜你喜欢
  • 2011-12-11
  • 1970-01-01
  • 1970-01-01
  • 2016-04-12
  • 1970-01-01
  • 2011-07-29
  • 2016-02-01
  • 1970-01-01
  • 2010-10-13
相关资源
最近更新 更多