【问题标题】:Returning neighborhood based on address with Google geocoder/API使用 Google 地理编码器/API 根据地址返回社区
【发布时间】:2010-12-24 16:13:16
【问题描述】:

是否有任何方法可以根据传入的地址、邮编、城市、州向 Google 地理编码器有效/准确地提取城市内的社区?

每当我尝试通过 HTTP(理想解决方案)执行此操作时,它都会返回以下信息

<kml>
−
<Response>
<name>anthonys cookies san francisco California</name>
−
<Status>
<code>200</code>
<request>geocode</request>
</Status>
−
<Placemark id="p1">
<address>San Francisco, CA, USA</address>
−
<AddressDetails Accuracy="4">
−
<Country>
<CountryNameCode>US</CountryNameCode>
<CountryName>USA</CountryName>
−
<AdministrativeArea>
<AdministrativeAreaName>CA</AdministrativeAreaName>
−
<SubAdministrativeArea>
<SubAdministrativeAreaName>San Francisco</SubAdministrativeAreaName>
−
<Locality>
<LocalityName>San Francisco</LocalityName>
</Locality>
</SubAdministrativeArea>
</AdministrativeArea>
</Country>
</AddressDetails>
−
<ExtendedData>
<LatLonBox north="37.8454521" south="37.7043396" east="-122.2913561" west="-122.5474749"/>
</ExtendedData>
−
<Point>
<coordinates>-122.4194155,37.7749295,0</coordinates>
</Point>
</Placemark>
</Response>
</kml>

如果您注意到,“地区名称”仍然是旧金山?

在这一点上,我愿意使用 Javascript API/调用而不是 HTTP 调用,这对于我正在尝试做的事情来说似乎有点矫枉过正(而且更让人头疼)。

理想情况下,我现在需要这个在旧金山工作,但如果我能让它在美国所有主要城市工作,那就太好了。

【问题讨论】:

  • 在这种情况下,您希望使用哪个地区/社区名称而不是旧金山?我过去曾见过 Google 地图处理地区问题。
  • 在这种情况下,我希望像“使命”或“使命”这样的东西。我也知道谷歌应该有能力处理这样的查询,因为数据绝对是你可以使用的,但正如这里显而易见的那样,它会将整个旧金山市作为地区名称返回?

标签: php api geocoding reverse-geocoding


【解决方案1】:

据我所知,您无法通过 google maps API 获取 Neighborhood 数据。您可以尝试其他 Web 服务,例如 Urban Mapping 的 Neighborhood API:http://developer.urbanmapping.com/demo/ 或 Maponics (http://www.maponics.com/Neighborhood_Boundaries/neighborhood_boundaries.html)。 Urban Mapping 的 API 包含按纬度和各种地址元素获取邻域的方法。

【讨论】:

  • 我会将此信息转发给在此特定项目中取代我的开发人员。
  • 这不是真的。我以前用谷歌地图来获取社区名称。
【解决方案2】:
function getGeoInfo($street,$city,$state) {
    $url = "http://maps.googleapis.com/maps/api/geocode/json?address={$street}+{$city},+{$state}&sensor=false";
    $json_returned = file_get_contents($url);
    $data = json_decode($json_returned);
    return ($data);
}

作为一个例子,当然你必须对你的变量进行 urlEncode,我建议使用 CuRL 而不是 *file_get_contents* 函数。

如果您对返回值进行 var_dump,您将看到邻域数据和访问它的结构。

【讨论】:

    【解决方案3】:

    更新 - 社区数据(如果可用)现在通过 Google 的地理编码器通过新的 V3 API 提供。 Neighborhood 只是 address_components 数组中的另一种数据类型。更多信息请访问 code.google.com/apis/maps/documentation/geocoding/

    【讨论】:

      【解决方案4】:

      使用http://www.maxmind.com/app/ip-location的免费服务

      你永远不会让它 100% 准确,但它应该能让你领先一步。

      HTML5 中也有地理定位,但并非所有浏览器都支持它,我不确定如何提取用户的地理位置。

      【讨论】:

      • 很棒的服务和建议,但似乎这项服务更多地说明了根据访问者的 IP 对访问者进行地理定位。我特别希望根据从表单传递给 API 的地址从某些 API(在本例中为 Google)中提取社区数据。即在上面的例子中,社区应该显示为“使命区”或“使命”。
      • 对不起,我误解了你的意思。我认为 Google 地图不支持您所追求的区域。
      猜你喜欢
      • 2013-06-14
      • 1970-01-01
      • 2015-12-08
      • 2012-04-29
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      • 2013-10-05
      相关资源
      最近更新 更多