Google maps api 3 如何将地址(作为文本)转换为gps坐标?

Google maps api 3 如何将地址(作为文本)转换为gps坐标?,google-maps-api-3,openstreetmap,Google Maps Api 3,Openstreetmap,假设我的地址为文本: 美国加利福尼亚州圣布鲁诺樱桃大道901号,邮编94066 有没有免费的服务可以帮助我识别这个地址的GPS坐标(经度和纬度)?(我将在我的应用程序中使用它,因此它应该是某种API) 文本可以是任何语言。将地址转换为地理坐标的过程称为地理编码 根据您将如何使用数据,谷歌提供了一个API,详细信息。祝你好运 检查谷歌地图api 3服务这是谷歌地图api中的反向地理编码服务 如果您能够/愿意使用php和Zend框架,那么大多数Google Maps API都是使用Zend_Htt

假设我的地址为文本:

美国加利福尼亚州圣布鲁诺樱桃大道901号,邮编94066

有没有免费的服务可以帮助我识别这个地址的GPS坐标(经度和纬度)?(我将在我的应用程序中使用它,因此它应该是某种API)


文本可以是任何语言。

将地址转换为地理坐标的过程称为地理编码


根据您将如何使用数据,谷歌提供了一个API,详细信息。祝你好运

检查谷歌地图api 3服务这是谷歌地图api中的反向地理编码服务


如果您能够/愿意使用php和Zend框架,那么大多数Google Maps API都是使用Zend_Http_客户端进行抽象的

例如:

$address='69某处道路,NW1 8UJ';
$http=新的Zend_http_客户端(“谷歌地图url”);
$http->setParameterGet(数组('address'=>$address,'sensor'=>'false');
$get=$http->request();
$get=json_decode($get->getBody());
如果($get->status==self::GOOGLE\u MAPS\u SUCCESS){
$lat=(浮动)$get->results[0]->几何体->位置->lat;
$long=(float)$get->results[0]->geometry->location->lng;
}

这与您使用的框架并不匹配,因为如果您想要大的东西,您可能会有一个大惊喜:2.5 K请求/天的限制,以防您不将这些信息存储在xml中供以后使用。
因此,现在您可以找到一种更好的方法,将其与OSM功能结合起来进行本地化。

下面是我使用的代码。我已经根据voncox代码准备好了(谢谢)。只是不想使用Zend。
如果您需要对多个地址进行地理编码,只需使用任何类型的循环关闭此代码,但可能有更快的方法。我只使用了大约100个地址,处理大约需要30秒

$street="Lwowska 4"; $postcode="00-658"; $city="Warszawa"; $region="mazowieckie";

$a=$street.", ".$postcode.", ".$city.", ".$region;
$address = urlencode($a);
$link = "http://maps.google.com/maps/api/geocode/xml?address=".$address."&sensor=false";
$file = file_get_contents($link);

if(!$file)  {
  echo "Err: No access to Google service: ".$a."<br/>\n";
}else {
  $get = simplexml_load_string($file);

  if ($get->status == "OK") {
      $lat = (float) $get->result->geometry->location->lat;
      $long = (float) $get->result->geometry->location->lng;
      echo "lat: ".$lat."; long: ".$long."; ".$a."<br/>\n";
  }else{
    echo "Err: address not found: ".$a."<br/>\n";
  }
}
$street=“Lwowska 4”$邮政编码=“00-658”$城市=“华沙”$region=“mazowieckie”;
$a=$street.,“$postcode.,”$city.,“$region;
$address=urlencode($a);
$link=”http://maps.google.com/maps/api/geocode/xml?address=“$address.”传感器=假“&sensor=false”;
$file=文件获取内容($link);
如果(!$file){
echo“错误:无法访问谷歌服务:“..a.”“
\n”; }否则{ $get=simplexml\u load\u字符串($file); 如果($get->status==“确定”){ $lat=(浮动)$get->result->geometry->location->lat; $long=(浮动)$get->result->geometry->location->lng; 回显“lat:.$lat.”长“.$long.;“$a.”
\n”; }否则{ echo“错误:找不到地址:“.a.”
\n; } }
仅供参考,MapQuest的社区许可证有一个“开放”api,它在背面使用Namingm/OpenStreetMap

它是与社区“许可”API相同的API(接口方面),这使得以后的转换变得容易

我发现开放版本要求地址有点太精确;部署后的第一天,我们“错过”了几个地址。我们原以为服务中断了,但结果是街道名称遗漏了一些细节,如方向(ex SW)

试用了许可版本,它甚至返回了拼写错误的地址

社区许可证授权的数据版本也是免费的,但受到与谷歌版本几乎相同的条款限制。“开放”数据,你可以用你想要的做什么


如果你最终要付钱,那么雅虎的Boss/geoapi似乎是低流量的最便宜的;他们只是没有免费的版本。

谢谢。OSM有相同的功能吗?感谢google API链接()。OSM有相同的功能吗?这里是OSM地理编码的链接-谢谢,使用地理编码这个词我找到了OSM API。回答得好,Marcin。删除答案中的MySQL部分可能是个好主意,因为它与问题无关,可能会引起一些混乱。做得好。我只需要地址到GPS的转换,就在谷歌的网站上浪费了大量的时间试图获取API密钥,允许它访问API,测试它。。。这种方法不需要密钥,只需返回数据。这是我首先真正需要的,不是嵌入式地图。