以任何方式(使用休息 API会很棒)获取与地理坐标对应的街道名称?我认为这个名字是地理编码,google有这个API吗?我是PHP开发人员。
实施例。
<?php
cor="38.115583,13.37579";
echo(geoname(cor)); // this prints: Foro Umberto I - 90133 Palermo
?>
因此,该功能的输出是街道名称,邮政编码和城市。感谢您提供任何帮助和脚本示例!
答案 0 :(得分:14)
是的,只需使用Google Maps API中的“反向地理编码”功能:http://code.google.com/apis/maps/documentation/geocoding/#ReverseGeocoding
以下是一些示例代码:
$lat="38.115583";
$long = "13.37579";
$url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$long&sensor=false";
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_ENCODING, "");
$curlData = curl_exec($curl);
curl_close($curl);
$address = json_decode($curlData);
print_r($address);
答案 1 :(得分:3)
这是我用于使用Google MAP API对街道地址进行反向地理编码查找的PHP函数。请注意,此示例以JSON格式获取Google的输出,但我在PHP中进行了简单的解析。
/*
* Use Google Geocoding API to do a reverse address lookup from GPS coordinates
*/
function GetAddress( $lat, $lng )
{
// Construct the Google Geocode API call
//
$URL = "http://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${lng}&sensor=false";
// Extract the location lat and lng values
//
$data = file( $URL );
foreach ($data as $line_num => $line)
{
if ( false != strstr( $line, "\"formatted_address\"" ) )
{
$addr = substr( trim( $line ), 22, -2 );
break;
}
}
return $addr;
}
安德鲁 OpenGeoCode.Org团队
顺便说一句&GT;谷歌确实限制将其API用于商业目的。基本上,您需要在谷歌地图上显示结果。
答案 2 :(得分:2)
您还可以查看使用Yahoo!的PlaceFinder API,该API提供反向地理编码。调用API的最小示例(要求它返回轻量级数据交换格式du {4 {3}})可能如下所示:
$url = 'http://where.yahooapis.com/geocode?location=55.948496,-3.198909&gflags=R&flags=J';
$response = json_decode(file_get_contents($url));
$location = $response->ResultSet->Results[0];
print_r($location);
哪个输出第一个结果(希望有一个!),其中包含street
,postal
和city
等属性。
使用PlaceFinder API的另一种方法是通过Yahoo!的JSON API,它允许您对“数据表”(通常是其他API)使用类似SQL的查询。
这样的查询可能如下所示:
SELECT * FROM geo.placefinder WHERE text="55.948496,-3.198909" AND gflags="R"
(YQL)
使用该查询从YQL调用YQL与前面的示例非常相似,并且应该打印相同的信息。
$query = 'SELECT * FROM geo.placefinder WHERE text="55.948496,-3.198909" AND gflags="R"';
$url = 'http://query.yahooapis.com/v1/public/yql?q='.urlencode($query).'&format=json';
$response = json_decode(file_get_contents($url));
$location = $response->query->results->Result;
print_r($location);
答案 3 :(得分:0)
正如@Elijah所提到的,我在上一个答案中给出的Maps API有很多限制。您实际上只是将其用于Google地图应用程序。如果这是一个问题,那么您也可以尝试使用AdWords API。它也有类似的服务,但谷歌收费,所以限制较少。