0

Googleマップの方向APIを使用して、データベースから都市を結ぶルートをマップしようとしています。私の問題は、json を介して php スクリプトから値を返すことになっている時点で立ち往生していることです。マップするデータは、配列を通知します:

$data=array('chicago','new york','lebanon','maysvile','greenfield');

私の意図は、データ配列から次の形式を返すことです。

var request = {
   origin:start, 
   destination:end,
   waypoints:[{
         location:"",
         stopover:true
   }],
   travelMode: google.maps.DirectionsTravelMode.DRIVING
}

これが私の出発点と目的地を取得した方法です: 配列の最初と最後の要素:

$start=reset($data);     
$end=end($data);

json_encode() を使用して php によって返されるデータ

    $response=array('origin'=>$start,'destination'=>$end,'travelMode'=>"google.maps.DirectionsTravelMode.DRIVING");
echo json_encode($response);

返された形式が正しくありません。また、中間点をどのようにすればよいかわかりません。中間点は、$start と $end が選択された後に残っているすべての値です。どんなアイデアでも大歓迎です.Thanks

4

2 に答える 2

1
$response = array(
    'origin' => array_shift($data),
    'destination' => array_pop($data),
    'waypoints' => array(),
    'travelMode' => 'DRIVING'
);
foreach($data as $wp) {
    $response['waypoints'][] = array('stopover' => true, 'location' => $wp);
}
echo json_encode($response);

注意して、配列array_shiftarray_pop変更してください!$data

スクリプトの出力は次のとおりです。

{
    "origin": "chicago",
    "destination": "greenfield",
    "waypoints": [
        {
            "stopover": true,
            "location": "new york"
        },
        {
            "stopover": true,
            "location": "lebanon"
        },
        {
            "stopover": true,
            "location": "maysvile"
        }
    ],
    "travelMode": "DRIVING"
}
于 2012-06-15T08:46:34.163 に答える
0

PHPから応答を返すと、JSON形式のデータを含む文字列になります。

以下を使用する必要があります。

var myObject = JSON.parse(stringOfJson);

それをJSONオブジェクトに変換します。

データのPHP表現が必要な場合は、PHPでオブジェクトを作成してデータを表現してみませんか。

class RouteInformation 
{
    public $Origin;
    public $Destination;
    public $Waypoints;
    public $TravelMode;

    public function __construct() 
    {
        $this->Waypoints = array();
    }
}

次に、このオブジェクトをJSONにシリアル化すると、必要な形式になります。

$response = new RouteInformation();
$response->Origin = array_shift($data);
$response->Destination = array_pop($data);
$response->TravelMode = 'DRIVING';

foreach($data as $wp) {
    $response->Waypoints[] = array('stopover' => true, 'location' => $wp);
}

echo json_encode($response);

さらに一歩進んで、配列内の各ウェイポイントを表すウェイポイントクラスを作成できます。

于 2012-06-15T09:07:17.180 に答える