首页 > 解决方案 > HTTP 请求失败,状态码:403,https://maps.googleapis.com/maps/api/staticmap?

问题描述

大家早上好,当我在模拟器屏幕上单击“当前位置”时出现此错误

     EXCEPTION CAUGHT BY IMAGE RESOURCE SERVICE ╞════════════════════════════════════════════════════
The following NetworkImageLoadException was thrown resolving an image codec:
HTTP request failed, statusCode: 403,
https://maps.googleapis.com/maps/api/staticmap? 

center=&37.4219983,-122.084&zoom=16&size=600x300&maptype=roadmap&markers=color:red%7Clabel:C%7C37.4219983,-122.084&key=GOOGLE_API_KEY 抛出异常时,这是堆栈:#0 NetworkImage._loadAsync 包:flutter/…/painting/_network_image_io.dart:100 #1 NetworkImage.load 包:flutter/…/painting/_network_image_io.dart:51 #2 ImageProvider.resolveStreamForKey。package:flutter/…/painting/image_provider.dart:505 #3 ImageCache.putIfAbsent package:flutter/…/painting/image_cache.dart:360 #4 ImageProvider.resolveStreamForKey package:flutter/…/painting/image_provider.dart:503 # 5 ScrollAwareImageProvider.resolveStreamForKey 包:flutter/…/widgets/scroll_aware_image_provider.dart:108 #6 ImageProvider.resolve。包:flutter/…/painting/image_provider.dart:334 #7 ImageProvider._createErrorHandlerAndKey.. package:flutter/…/painting/image_provider.dart:464 #8 SynchronousFuture.then package:flutter/…/foundation/synchronous_future.dart:43 #9 ImageProvider._createErrorHandlerAndKey. package:flutter/…/painting/image_provider.dart:461 #13 ImageProvider._createErrorHandlerAndKey package:flutter/…/painting/image_provider.dart:453 #14 ImageProvider.resolve package:flutter/…/painting/image_provider.dart:331 # 15 _ImageState._resolveImage 包:flutter/…/widgets/image.dart:1116 #16 _ImageState.didChangeDependencies 包:flutter/…/widgets/image.dart:1069 #17 StatefulElement._firstBuild 包:flutter/…/widgets/framework。 dart:4705 #18 ComponentElement.mount 包:flutter/…/widgets/framework.dart:4520 #19 Element.inflateWidget 包:flutter/…/widgets/framework。

这是我的“LocationHelper”代码

const GOOGLE_API_KEY = "I entered my API KEY here";



class LocationHelper {
  static String generateLocationPreviewImage({double latitude, double longitude}) {
    return "https://maps.googleapis.com/maps/api/staticmap?center=&$latitude,$longitude&zoom=13&size=600x300&maptype=roadmap&markers=color:red%7Clabel:C%7C$latitude,$longitude&key=$GOOGLE_API_KEY";
  }
}

这是我使用它的地方

    import 'package:flutter/material.dart';
import 'package:location/location.dart';

import '../helpers/location_helper.dart';

class LocationInput extends StatefulWidget {
  @override
  _LocationInputState createState() => _LocationInputState();
}

class _LocationInputState extends State<LocationInput> {
  String _previewImageUrl;

  Future<void> _getCurrentUserLocation () async {
    final locData = await Location().getLocation();
   final staticMapImageUrl = LocationHelper.generateLocationPreviewImage(
     latitude: locData.latitude,
     longitude: locData.longitude,
   );
   setState(() {
     _previewImageUrl = staticMapImageUrl;
   });
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        Container(
          alignment: Alignment.center,
          height: 200,
          width: double.infinity,
          decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(5),
            border: Border.all(
              width: 1,
              color: Colors.grey,
            ),
          ),
          child: _previewImageUrl == null
              ? Text(
                  "No location found",
                  textAlign: TextAlign.center,
                )
              : Image.network(_previewImageUrl,
                  fit: BoxFit.cover, width: double.infinity),
        ),
        Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            FlatButton.icon(
              label: Text(
                "Current Location",
              ),
              textColor: Theme.of(context).primaryColor,
              icon: Icon(Icons.location_on),
              onPressed: _getCurrentUserLocation ,
            ),
            FlatButton.icon(
              label: Text(
                "Select on Map",
              ),
              textColor: Theme.of(context).primaryColor,
              icon: Icon(Icons.map),
              onPressed: () {},
            ),
          ],
        ),
      ],
    );
  }
}

标签: flutterdart

解决方案


推荐阅读