0

ユーザーが入力した住所から Google の緯度と経度を取得しようとしています。データベースを挿入する前にこれを行いたいのですが、もっと良い方法はないでしょうか?

この関数をスタンドアロンとして実行すると、機能して座標が返されます

$addressString = "21 Albert St Montreal H2W2H1";
function get_google($addressString){
        if (!is_string($addressString))die("All Addresses must be passed as a string");
        $_url = sprintf('http://maps.google.com/maps?output=js&q=%s',rawurlencode($addressString));
        $_result = false;
        if($_result = file_get_contents($_url)) {
            if(strpos($_result,'errortips') > 1 || strpos($_result,'Did you mean:') !== false) return false;
            preg_match('!center:\s*{lat:\s*(-?\d+\.\d+),lng:\s*(-?\d+\.\d+)}!U', $_result, $_match);
            $_coords['lat'] = $_match[1];
            $_coords['long'] = $_match[2];
        }
        echo $_coords['lat'] . " " . $coords['long']; // echoes correctly
    }

..しかし、コードでこれを試してみると、それらの値に対して NULL しか返されないようです。(私はコードイグナイターを使用しています)

$data->name = $this->input->post('name');
$data->address = $this->input->post('address');
$coords = $this->get_google($data->address);
$data->goog_lat = $coords[0];  // seems to be returning NULL
$data->goog_long = $coords[1]; // and i get 'undefined offset' errors (because of NULL, i guess?)
$this->client_model->add_client($data);

..だから私が試してみると、Google座標が取得されません.. NULL値のみ。

誰が私が台無しにしているのか、またはこれを行うためのより良い方法を教えてもらえますか? これはタイミングの問題によるものですか、それとも何か他のものですか?

4

1 に答える 1

0

エコーのある行を次のように変更します

return array($_coords['lat'],$coords['long'])
于 2013-08-14T09:48:47.390 に答える