私は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行目