Php 有没有一种更简单/更短的方法从谷歌地图获取地理坐标?

Php 有没有一种更简单/更短的方法从谷歌地图获取地理坐标?,php,google-maps,Php,Google Maps,我目前正在使用以下方法从谷歌地图获取坐标。 我可以写得更短/更有效吗 编辑2013年6月21日 到目前为止,旧的是关闭。这是我修改过的代码,适用于最新版本。我已经更新了这篇文章,如果有人无意中发现它有用的话 public function getGeographicCoordinatesFromGoogle() { // create address string $value = $this->address_line_1 . ' ' . $th

我目前正在使用以下方法从谷歌地图获取坐标。 我可以写得更短/更有效吗

编辑2013年6月21日

到目前为止,旧的是关闭。这是我修改过的代码,适用于最新版本。我已经更新了这篇文章,如果有人无意中发现它有用的话

public function getGeographicCoordinatesFromGoogle()
{
    // create address string
    $value = $this->address_line_1 . ' ' .
             $this->postal_code . ' ' .
             $this->city . ' ' .
             $this->country;
    $value = preg_replace('!\s+!', '+', $value);

    // create request
    $request = 'http://maps.googleapis.com/maps/api/geocode/xml?address=' .
               $value . '&sensor=false';

    // get value from xml request
    $xml = file_get_contents($request);
    $doc = new \DOMDocument('1.0', 'UTF-8');
    @$doc->loadXML($xml);

    // fetch result
    $result = $doc->getElementsByTagName('lat')->item(0)->nodeValue . ',' .
              $doc->getElementsByTagName('lng')->item(0)->nodeValue;

    // check result
    if (!preg_match('/(-?\d+\.\d+),(-?\d+\.\d+)/', $result) ) {
        $result = null;
    }
    // assign value
    $this->setGeographicCoordinates($result);
}

我建议您使用http_build_query()而不是尝试使用Regex构建SearchQuery。还有其他需要逃脱的角色


这是一个相当长的方法。也许有一个类只处理与GoogleMaps的通信是有意义的(GeoBackend类的方法是getGeoDataForAddress(),它返回一个GeoData对象,可能会要求提供cordinate等)

我建议您使用http\u build\u query()而不是尝试使用Regex构建SearchQuery。还有其他需要逃脱的角色


这是一个相当长的方法。也许有一个类只处理与GoogleMaps的通信是有意义的(类GeoBackend,方法为getGeoDataForAddress(),它返回一个GeoData对象,可能需要cordinate等)

您可以使用json而不是xml。json更新、轻量级且面向对象。

您可以使用json而不是xml。json更新、轻量级且面向对象。

+1是的,我今天切换到新API时看到了json支持。我认为旧版本不支持它,我想我会支持它。+1是的,我今天切换到新API时看到了JSON支持。我认为旧的不支持它,我想我会同意的。