首先,我知道Google地理位置的许可条款禁止在不显示Google地图上返回的位置的情况下使用该服务。
话虽这么说,我正在开发一个使用Google地理位置的应用程序。我正在C#中构建对Google地理位置的请求。
在我正在处理的系统上,包含地址的批量记录被发送到另一个系统进行处理,然后发回。我需要知道所有这些地址的纬度和经度,并且有数千个地址。问题是,这个过程可能会重复,只有几个地址实际发生了变化。我需要将这些与我的本地记录进行比较,看看哪些更改了。我无法在Javascript中执行此操作,因此必须在服务器端以C#代码完成。
(我确实知道这可以应用于任何服务器端语言,但我使用的是C#。)
请求转到http://maps.googleapis.com/maps/api/geocode/xml?address= {0}& sensor = false。这得到了我的纬度和经度,但我需要将结果限制在地图上的矩形区域。
在我满足此要求之前的应用程序的早期版本中,我确实在Javascript中执行此操作,因为Google使用Javascript google.maps.LatLng
对象指导其文档。
我试过的一件事不起作用是我尝试使用Telerik Fiddler来查看通过Javascript代码发送给Google的请求。出于某种原因,这个请求似乎对Fiddler来说是不可见的。 (为什么?我不知道。)
我尝试的另一件事是尝试在我的服务器上过滤结果。由于一个微妙的原因,这也不起作用。某些结果仅在偏向其所在地区时才会返回。例如,如果您通过“檀香山”,您将获得美国夏威夷檀香山的经度和经度,正如您所期望的那样。然而,北卡罗来纳州还有一个叫做檀香山的小镇。如果用户期望他在北卡罗来纳州进行搜索,他可能无法在没有指定范围的情况下找到这个城镇,因为当搜索无限制地执行搜索时,Google将始终返回夏威夷檀香山。
TL; DR;当使用服务器端语言(如C#)手动构建Web请求时,如何告知Google地理位置在地图上的矩形方块的范围内进行搜索?
答案 0 :(得分:1)
bounds-parameter的格式为
sw-lat,sw-lng|ne-lat,ne-lng
所以对于北卡罗来纳州檀香山来说,这将是
bounds=35.3538404,-77.2976329|35.3720392,-77.2656181
问题:bounds-parameter 不限制结果(参见:https://developers.google.com/maps/documentation/geocoding/#Viewports)
你可以做什么:当你例如知道预期的状态,使用component-filtering。对于檀香山,NC,参数将是
components=administrative_area:NC
结果(在北卡罗来纳州):http://maps.googleapis.com/maps/api/geocode/xml?address=honolulu&components=administrative_area:NC