繁体   English   中英

我一直在使用反向地理编码 api 然后我得到了这个错误?

[英]i have been using reverse geocoding api and then i got this error?

E/flutter (23931): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] 未处理异常: RangeError (index): 无效值: 有效值范围为空: 0

import 'package:geolocator/geolocator.dart';
import 'package:rider_app/Assistants/resquestAssitant.dart';
import 'package:rider_app/configMaps.dart';

class AssistantMethods {
  static Future<String> searchCoordinateAddress(Position position) async {
    String placeAddress = "";
    String url = "https://maps.googleapis.com/maps/api/geocode/json? latlng=${position.latitude},${position.longitude}&key=$code";
    var response = await RequestAssistant.getRequest(url);

    if (response != "failed") {
      placeAddress = response["results"][0]["formatted_address"]; 
    }

    return placeAddress;
  }
}

这意味着 API 没有返回结果,您正在无条件地访问response["results"][0] ,但它可以并且在您的情况下确实没有返回任何结果。

您应该检查它是否不为空并且它们确实是结果列表,然后访问 index[0]。

例如,如果您传递坐标,则可能会发生此结果,但 Google 无法解释为地点或人类可读的地址。 如果您在模拟器上,或者分配位于大西洋中部的随机起始LatLng(0.0,0.0) ,则会发生很多情况。 我以前做过类似的事情。 或者基本上任何其他不让 Google 返回响应的原因,如果您对 API 设置速率限制,或者陷入无限循环,最终暂时限制您的 API 请求的速率。 先检查那些。

将您的 if 语句更改为:

if (response != "failed" && response["results"].isNotEmpty ) {
  placeAddress = response["results"][0]["formatted_address"];
}else{
placeAddress = "Error in retrieving address info";}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM