Google Maps Geolocation API的替代品

Rya*_*die 7 javascript json google-maps geolocation

我正在开发一个每秒钟涉及大量实时数据的项目(通过websockets实现).因此,它无法处理调用Google的API以将City + Region转换为longlat坐标.我的成功率约为1到100.是否有无限制的城市和区域替代方案来协调Google API的服务?理想情况下,本地存储此类数据的JSON数组?

JG *_* SD 7

您可以使用Yahoo提供的名为YQL的服务.此服务仅限数量有限,每天最多100,000次.然后,您可以从响应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 -->
Run Code Online (Sandbox Code Playgroud)


jos*_*736 2

通常,当您处理大量数据点时,您会在服务器上对它们进行一次地理编码。然后您可以将纬度/经度流式传输给您的客户以供使用。

Google 有一个地理编码网络服务,您可以从您的服务器使用该服务,但请求限制为每天 2,500 个。如果这不起作用,您还可以查看OSM的 Nominatim;Mapquest托管无限制的 Web 服务。