替代谷歌地图定位API的选择

6

我正在开发一个涉及每秒大量实时数据的项目(通过websockets实现)。因此,它无法处理调用Google API将城市+地区转换为经纬度坐标。我得到了约1到100的成功率。是否有无限制的替代Google API的城市和地区到坐标服务?理想情况下是这样的数据的本地存储JSON数组。

3个回答

7
您可以使用雅虎提供的一个服务,名为YQL。此服务免费提供一定数量的请求,每天最多可达到10万次。您可以在响应XML上检索出纬度和经度,位于query/results/place/centroid
关于这个服务,有一点需要注意:城市名称必须精确匹配,可能会有多个结果。 http://developer.yahoo.com/yql/ YQL查询示例: http://query.yahooapis.com/v1/public/yql?q=SELECT * FROM geo.places WHERE text="Seattle" and placeTypeName = "Town" 响应XML:
<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng" yahoo:count="1" yahoo:created="2012-07-09T16:20:40Z" yahoo:lang="en-US">
  <results>
    <place xmlns="http://where.yahooapis.com/v1/schema.rng" xml:lang="en-US" yahoo:uri="http://where.yahooapis.com/v1/place/2490383">
      <woeid>2490383</woeid>
      <placeTypeName code="7">Town</placeTypeName>
      <name>Seattle</name>
      <country code="US" type="Country">United States</country>
      <admin1 code="US-WA" type="State">Washington</admin1>
      <admin2 code="" type="County">King</admin2>
      <admin3/>
      <locality1 type="Town">Seattle</locality1>
      <locality2/>
      <postal/>
      <centroid>
        <latitude>47.603561</latitude>
        <longitude>-122.329437</longitude>
      </centroid>
      <boundingBox>
        <southWest>
          <latitude>47.422359</latitude>
          <longitude>-122.472153</longitude>
        </southWest>
        <northEast>
          <latitude>47.745071</latitude>
          <longitude>-122.176193</longitude>
        </northEast>
      </boundingBox>
      <areaRank>6</areaRank>
      <popRank>12</popRank>
    </place>
  </results>
</query>
<!-- total: 82 -->
<!-- engine5.yql.mud.yahoo.com -->

3

请查看datasciencetoolkit.org。他们提供一个VM镜像/AMI,您可以在EC2上托管它,并对您自己的服务器进行地理定位调用,因此没有API限制。

此外,还有Yahoo的地理定位API,其限制比Google更高。


2
通常当你处理大量数据点时,你会在服务器上对它们进行一次地理编码。然后,你可以将纬度/经度流式传输到客户端以供使用。
Google有一个地理编码Web服务,你可以从服务器上使用,但请求限制为每天2,500个。如果这行不通,你也可以看看OSM的Nominatim;Mapquest 托管一个没有限制的Web服务。

解决方案不是增加API调用限制,我们总是可以购买更多的配额,但问题在于高请求/秒根本无法实现。我同意我们需要在流数据中获取这些信息,但目前我们无能为力,我希望能够提供一个开源的数组链接来获取这些信息。 - Ryan Brodie
如果您无法修改数据源本身,您总是可以代理数据流。让您的服务器连接到数据源,进行地理编码,然后将数据和坐标流式传输给客户端。 - josh3736

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接