如何以编程方式(合法地)获取街道地址的经度和纬度

Ola*_*døy 74 api web-services geocoding geolocation street-address

据说,可以从Google地图或某些此类服务获取此信息.(美国地址不够好.)

Sij*_*jin 70

您正在寻找的术语是地理编码,是的Google确实提供此服务.

  • 请确保您遵守使用规则.我认为,如果您在Google地图上显示位置,Google只允许使用此功能.不允许将其用于其他目的,但您应该检查许可证和使用规则. (3认同)

Tim*_*ley 22

除了上述的Google地理编码网络服务之外,还有雅虎提供的竞争服务.在最近通过用户交互完成地理编码的项目中,我包括对两者的支持.原因是我发现,尤其是在美国之外,他们对更加模糊的地点的处理差异很大.有时谷歌会得到最好的答案,有时候是雅虎.

需要注意的是:如果Google真的认为他们不知道你的位置在哪里,他们会返回602错误,表示失败.另一方面,雅虎如果可以从你的不良地址剥离一个城市/省/州/等,将返回该镇中心的位置.因此,您必须注意结果,看看它们是否真的是您想要的.某些结果中有辅助字段可以告诉您:雅虎将此字段称为"精确",Google将其称为"准确性".

  • 一个 jsfiddle,其中包含替换雅虎服务、诺基亚 ovimaps 的示例:http://jsfiddle.net/MgjGr/ (2认同)

Ada*_*vis 15

如果您想在不依赖服务的情况下这样做,那么您可以从美国人口普查下载TIGER Shapefile.

你抬头看看你感兴趣的街道,它将有几个部分.每个段都有一个起始地址和结束地址,并沿着该段进行插值,以找到您的门牌号所在段的位置.

这将为您提供lon/lat对.

但请记住,在线服务会使用大量的地址检查和更正,您必须复制这些内容以获得良好的结果.

另请注意,与免费数据一样好,它并不完美 - 最新的街道不在那里(它们可能在Google使用的数据中),并且由于调查不准确,街道可能会偏离其实际位置一定数量.但是对于98%的地理编码需求,它可以完美地运行,是免费的,并且您可以控制所有内容,因此您可以减少应用中的依赖关系.

Openstreetmaps的目标是绘制世界上的所有内容,尽管它们并不存在,因为它们在CC许可下提供数据值得关注

但是,许多(大多数?)其他国家/地区仅通过您需要支付费用的政府或服务进行映射.如果您不需要对非常多的数据进行地理编码,那么使用Google,Yahoo或其他一些免费的全球地图服务可能就足够了.

如果您必须对大量数据进行地理编码,那么最好通过租用来自主要提供商(如teleatlas)的地图数据来提供服务.

-亚当

  • 确实如此,但最初问题并未说明这一点 - 作者在原始帖子后 15 分钟内所做的编辑不被视为编辑。不过,我会更新答案。 (2认同)

peS*_*HIr 9

您还可以尝试使用OpenStreetMap NameFinder,它包含(可能)整个世界的开源,类似wiki的街道数据.NameFinder将在8月底停止存在,但Nominatim是它的替代品.


Ric*_*son 7

Google要求您显示包含其数据的Google地图,每天最多2.5k(25k)HTTP请求.有用,但你必须看用法.

他们确实有

http://groups.google.com/group/Google-Maps-API/web/resources-non-google-geocoders

(谷歌已经删除了这个.如果你看到重复或缓存,我会链接到那个.)

...我发现GeoNames有可下载的数据库,免费的网络服务和商业网络服务.


Cra*_*eil 5

如果您的网站可供消费者免费使用,Google 的服务条款将允许您免费使用其地理编码 API。如果没有,您将必须获得企业地图的许可证。