使用纬度和经度列从 MySql 表中获取国家/城市明智的数据
Posted
技术标签:
【中文标题】使用纬度和经度列从 MySql 表中获取国家/城市明智的数据【英文标题】:Fetch Country/City wise data from MySql table using Latitude and Longitude colomns 【发布时间】:2015-12-05 10:07:42 【问题描述】:这是我的示例表
table name: activitylog
id | activity | lat | long
---+--------------+-------------+-------------
1 | activity1 | 11.2742848 | 75.8013801
2 | activity2 | 11.2742848 | 75.8013801
3 | activity3 | 11.2742848 | 75.8013801
4 | activity4 | 11.2742848 | 75.8013801
我必须从上面选择属于特定国家/城市的条目。国家或城市没有单独的列。我对 google 的 Geolocation API 感到困扰。但是对于一张长表,检查每个条目是否属于我的区域是非常缓慢的过程
我需要将所有经纬度详细信息存储在另一个表中吗?哪个是最佳做法?
编辑:就我而言,无法在表格上方存储城市或国家/地区信息。
【问题讨论】:
【参考方案1】:你为什么要这么做……
有一个免费的 Google Geocoding API 通过 HTTP REST API 提供此服务。请注意,API 的使用量和速率受到限制,但您可以为无限制访问付费。
试试这个链接看看输出的例子(这是在 json,输出也可以在 XML 中)
http://maps.googleapis.com/maps/api/geocode/json?latlng=11.2742848,75.8013801&sensor=true
或
有一个 Web 服务会返回国家代码并将 lat 和 long 作为参数。
这里是一个例子:http://api.geonames.org/countryCode?lat=49.03&lng=10.2&username=demo
我也找到了一点说明:
任何给定点的iso国家代码。
网络服务类型:REST
网址:ws.geonames.org/countryCode?
参数:lat, lng, type, lang, 半径(沿海地区最近国家的缓冲区,单位为公里)
结果: 返回给定纬度/经度的 iso 国家代码
随着 参数 type=xml 此服务返回一个带有 iso 的 xml 文档 国家代码和国家名称。可以使用可选参数 lang 指定国家名称应使用的语言。JSON 输出为 使用 type=JSON 生成
请注意,您应该在http://www.geonames.org/login 创建一个用户帐户才能使用该服务。
【讨论】:
如何将此 API 应用于长表?我认为如果我对每个条目都使用这个 API,它需要很长时间。我只想选择属于特定城市或国家的条目。 为什么不将此信息也存储在表中...当您将活动日志存储在表中时。这样就可以直接获取数据了。虽然有包含 lat、long 和城市映射的免费 DB 可用..但我不建议使用它 在我的情况下改变表是不可能的。所以我正在寻找另一种方式。以上是关于使用纬度和经度列从 MySql 表中获取国家/城市明智的数据的主要内容,如果未能解决你的问题,请参考以下文章
在谷歌地图 api v3 中将地区、城市、州、国家/地区转换为纬度和经度?