0

我目前正在建立一个小型社区,用户可以在其中标记地图上的特定位置。

要保存地图点,我需要将 lat/lng 保存到我的数据库中,但用户不知道 lat/lng,所以我必须使用(反向)地理编码 API。

我查看了 geonames.org,但全文搜索的结果......不太好。例如,如果我搜索“München”,我会得到大约 5 个具有相同标题/名称的结果。

在 Google Maps Api 中测试同一个城市,结果要好得多,所以我想使用 Google Gecoder。

剩下的唯一问题是,在文档页面上提到了一个限制 - 每天最多 2500 个请求。

好吧,这听起来很多,但如果我的社区变得更大,那就不是那么多了......

所以我的问题是,是否可以使用访客 IP 地址对 Google Maps Api 进行地理编码请求,因此 Google 不会将其视为来自我的服务器的请求?

目前,对某些内容进行地理编码的“我的方式”是通过 AJAX (jQuery) 获取一个单独的 PHP 文件,同时将搜索字符串传递给它。然后 PHP 文件使用“simplexml_load_file”获取结果,然后将其返回给主文档。

如果您查看此地理编码器:http ://www.gpsvisualizer.com/geocoder/

您可以在页脚中看到以下描述:“此表单使用 JavaScript-On-Demand (JSON) 代码,该代码使您的 Web 浏览器成为发出请求的人(而不是 gpsvisualizer.com),这意味着您的查询不计算在内违反我服务器的限制。”

4

2 回答 2

0

嗯,我发现了一些东西。凯文 B似乎是对的。

看看这个:https ://developers.google.com/maps/articles/geocodestrat?hl=de

据此...

何时使用客户端地理编码

基本答案是“几乎总是”。由于地理编码限制是针对每个用户会话的,因此您的应用程序不会随着用户群的增长而达到全局限制。除非您在用户会话中执行一批地理编码请求,否则客户端地理编码不会面临配额限制。因此,运行客户端地理编码,您通常不必担心您的配额。

...这是可能的,只需使用 Javascript API!

用户搜索“法国巴黎”,Google JS API 返回 lat/lng,我将其存储在数据库(缓存)中并在 Google 地图上显示,因此我不需要任何服务器端地理编码请求!

于 2012-11-15T07:50:32.307 回答
0

短:不,对不起。

替代方案:您可以使用浏览器的 javascript geolocationAPI(只要它们受支持)来获取坐标。这允许您使用例如 google geocoder api。一些起点可能在这里:支持和链接页面

注意:用户可能会使用谷歌地图小部件来标记他们自己的位置,您也可以在其中检索坐标。

于 2012-11-14T16:36:40.030 回答