0

私はcakephpを使ってモバイルアプリケーションのバックエンドを開発しています

都市を一覧表示する関数があり、ユーザーからの距離を計算したいのですが、この都市のコードは次のとおりです。

$origins='origins=casablanca,maroc';
    $destinations='&destinations=';
    $url='http://maps.googleapis.com/maps/api/distancematrix/json?';

    $this->paginate = array(
            'limit' => 10,
            'fields'=>array('cityId','cityFileName','cityName','stateId','stateFileName','stateName',
                'countryCode','countryFileName','countryName','count(id) as num_hotels'),
            'order' => 'num_hotels desc',
            'group' =>array('cityId')

    );
    $hotels = $this->paginate();

    for ($i = 0; $i < count($hotels); ++$i) {

        $destination=($i==0?'':'|');

        $destination.=$hotels[$i]['Hotel']['cityName'].','.$hotels[$i]['Hotel']['countryName'];

        $destinations.=$destination;
    }

    $url.=$origins.$destinations.'&mode=driving&language=fr-FR&sensor=false';

    $json = file_get_contents($url,0,null,null);
    $details = json_decode($json, TRUE);

    for ($i = 0; $i < count($hotels); ++$i) {
        $hotels = Set::insert($hotels, $i.'.Hotel.distance',$details['rows']['0']['elements']['0']['distance']['value']);
    }

    $this->set(compact('hotels'));
    $this -> viewPath = "hotels";
    $this -> render("json/index","json/default");

問題は、最初のページ(ページ付け)でテストした場合、結果は良好ですが、他のページにアクセスした場合> = 2この警告が表示され、距離を取得できません

エラーは:

Warning (2): file_get_contents(http://maps.googleapis.com/maps/api/distancematrix/json?origins=casablanca,maroc&destinations=Zagora,Morocco|Meknes,Morocco|Chefchaouen,Morocco|Tinghir,Morocco|M'hamid,Morocco|El Jadida,Morocco|Erfoud,Morocco|Skoura,Morocco|Tetouan,Morocco|Imlil,Morocco&mode=driving&language=fr-FR&sensor=false) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request

[APP \ Controller \ ApiController.php、81行目]

コードコンテキスト

$ origins = "origins = casablanca、maroc" $ destinations = "&destinations = Zagora、Morocco | Meknes、Morocco | Chefchaouen、Morocco | Tinghir、Morocco | M'hamid、Morocco | El Jadida、Morocco | Erfoud、Morocco | | Tetouan、Morocco | Imlil、Morocco "$ url =" http://maps.googleapis.com/maps/api/distancematrix/json?origins=casablanca,maroc&destinations=Zagora,Morocco|Meknes,Morocco|Chefchaouen,Morocco|Tinghir 、モロッコ| M'hamid、Morocco | El Jadida、Morocco | Erfoud、Morocco | Skoura、Morocco | Tetouan、Morocco | Imlil、Morocco&mode = Driving&language = fr-FR&sensor = false "$ hotels = array(array(" Hotel "=> array()、 array())、array( "Hotel" => array()、array())、array( "Hotel" => array()、array())、array( "Hotel" => array()、array( ))、array( "Hotel" => array()、array())、array( "Hotel" => array()、array())、array( "Hotel" => array()、array()) 、array( "Hotel" => array()、array())、array( "Hotel" => array()、array())、array( "Hotel" => array()、array()))$ i = 10 $ destination = "| Imlil、Morocco"$ http_response_header = array( "HTTP / 1.0 400 Bad Request"、 "Content-Type:text / html; charset = UTF-8"、 "Content-Length:925"、 "Date:Wed、08 Aug 2012 15:42: 43 GMT "、"サーバー:GFE / 2.0 ")

file_get_contents-[内部]、行?? ApiController :: yassine()-APP \ Controller \ ApiController.php、81行目ReflectionMethod :: invokeArgs()-[内部]、行?? Controller :: invokeAction()-CORE \ Cake \ Controller \ Controller.php、行473 Dispatcher :: _ invoke()-CORE \ Cake \ Routing \ Dispatcher.php、行104 Dispatcher :: dispatch()-CORE \ Cake \ Routing \ Dispatcher.php、86行目[メイン]-APP \ webroot \ index.php、96行目

4

1 に答える 1

0

この行を修正する必要があります。

$url.="origins=" .  urlencode($origins). "&destinations=" .
      urlencode($destinations)."&mode=driving&language=fr-FR&sensor=false";
于 2012-08-27T09:03:35.453 に答える