为什么 Google 距离矩阵 Api 返回无效请求状态? (使用颤振)
Why Google Distance Matrix Api returning invalid request status? (using Flutter)
我正在尝试调用 Distance Matrix API,每次我调用它时,它 return 都是一个无效请求,这是我调用请求并解析它的代码
输出:
{destination_addresses: [], origin_addresses: [], rows: [], status: INVALID_REQUEST}
向api请求的函数:
Future<String> getDuration(LatLng l1, List<LatLng> l2) async {
var destinations = await _getwaypoints(l2);
String url =
"https://maps.googleapis.com/maps/api/distancematrix/json?
origin=${l1.latitude},${l1.longitude}&destination=$destinations&departure_time=now&key=$apiKey";
http.Response response = await http.get(url);
Map values = jsonDecode(response.body);
return values.toString();
_getwaypoints 函数,我用它来格式化列表以适合请求:
Future<String> _getwaypoints(List<LatLng> way) async {
String waypointcoords = '';
// Future<String> finalwaypoints;
if (way == null) {
return null;
} else {
for (int i = 0; i <= (way.length - 1); i++) {
var lat = way[i].latitude.toString();
var lon = way[i].longitude.toString();
if (i == 0) {
waypointcoords += '$lat%2C$lon';
} else {
waypointcoords += '%7C$lat%2C$lon ';
}
}
waypointcoords.trim();
return waypointcoords;
}
}
此外,我尝试传递一个起点位置和一个终点位置,结果是相同的输出,
为什么 return 是无效的请求状态,同时它仍然认识到它的距离矩阵 API 和 return 为空 destination_addresses、origin_addresses 和行,
我做错了什么吗?
在请求URL中,必须是origins
和destinations
而不是origin
和destination
我正在尝试调用 Distance Matrix API,每次我调用它时,它 return 都是一个无效请求,这是我调用请求并解析它的代码
输出:
{destination_addresses: [], origin_addresses: [], rows: [], status: INVALID_REQUEST}
向api请求的函数:
Future<String> getDuration(LatLng l1, List<LatLng> l2) async {
var destinations = await _getwaypoints(l2);
String url =
"https://maps.googleapis.com/maps/api/distancematrix/json?
origin=${l1.latitude},${l1.longitude}&destination=$destinations&departure_time=now&key=$apiKey";
http.Response response = await http.get(url);
Map values = jsonDecode(response.body);
return values.toString();
_getwaypoints 函数,我用它来格式化列表以适合请求:
Future<String> _getwaypoints(List<LatLng> way) async {
String waypointcoords = '';
// Future<String> finalwaypoints;
if (way == null) {
return null;
} else {
for (int i = 0; i <= (way.length - 1); i++) {
var lat = way[i].latitude.toString();
var lon = way[i].longitude.toString();
if (i == 0) {
waypointcoords += '$lat%2C$lon';
} else {
waypointcoords += '%7C$lat%2C$lon ';
}
}
waypointcoords.trim();
return waypointcoords;
}
}
此外,我尝试传递一个起点位置和一个终点位置,结果是相同的输出,
为什么 return 是无效的请求状态,同时它仍然认识到它的距离矩阵 API 和 return 为空 destination_addresses、origin_addresses 和行,
我做错了什么吗?
在请求URL中,必须是origins
和destinations
origin
和destination