我正在尝试使用谷歌地图方向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);
php使用json_encode()
返回的数据 $response=array('origin'=>$start,'destination'=>$end,'travelMode'=>"google.maps.DirectionsTravelMode.DRIVING");
echo json_encode($response);
返回的格式不正确。另外我无法弄清楚我应该怎么做中点。中间点是$ start和$ end被选中后剩余的所有值。 任何想法都非常感谢。谢谢
答案 0 :(得分: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_shift
和array_pop
会修改$data
数组!
脚本的输出是:
{
"origin": "chicago",
"destination": "greenfield",
"waypoints": [
{
"stopover": true,
"location": "new york"
},
{
"stopover": true,
"location": "lebanon"
},
{
"stopover": true,
"location": "maysvile"
}
],
"travelMode": "DRIVING"
}
答案 1 :(得分: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);
您可以更进一步,创建一个Waypoint类来表示数组中的每个Waypoint。