标签: google-maps-flutter

当视图加载两次时,Google Map使Flutter崩溃

我使用Firestore作为数据库,并使用StreamBuilder路由检查isLoggedIn。首次登录时,Google Map工作正常,但是再次登录时,崩溃并显示以下错误:

D/libEGL  (11553): eglInitialize: enter
D/libEGL  (11553): eglInitialize: exit(res=1)
W/com.flutter.geolocation(11553): type=1400 audit(0.0:18911): avc: denied { search } for comm=474C5468726561642037323135 name="ctx" dev="debugfs" ino=15090 scontext=u:r:untrusted_app_27:s0:c512,c768 tcontext=u:object_r:qti_debugfs:s0 tclass=dir permissive=0
D/AndroidRuntime(11553): Shutting down VM
E/AndroidRuntime(11553): FATAL EXCEPTION: main
E/AndroidRuntime(11553): Process: com.flutter.geolocation, PID: 11553
E/AndroidRuntime(11553): java.lang.NullPointerException: Attempt to invoke virtual method 'int android.view.Display.getDisplayId()' on a null object reference
E/AndroidRuntime(11553):        at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:4260)
E/AndroidRuntime(11553):        at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime(11553):        at android.os.Looper.loop(Looper.java:201)
E/AndroidRuntime(11553):        at android.app.ActivityThread.main(ActivityThread.java:6806)
E/AndroidRuntime(11553):        at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(11553):        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
E/AndroidRuntime(11553):        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
E/MQSEventManagerDelegate(11553): failed to get …
Run Code Online (Sandbox Code Playgroud)

flutter google-maps-flutter

5
推荐指数
1
解决办法
196
查看次数

如何处置Flutter谷歌地图的控制器

我在我的项目中使用google_maps_flutter库。当我热重新加载地图或从另一个视图返回地图时,它会崩溃并显示消息:

Exception has occurred.
PlatformException (PlatformException(error, java.lang.IllegalStateException: Trying to create an already created platform view, view id: 0
    at io.flutter.plugin.platform.PlatformViewsController$1.createPlatformView(PlatformViewsController.java:85)
    at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.create(PlatformViewsChannel.java:96)
Run Code Online (Sandbox Code Playgroud)

所以我试图处理地图及其控制器。我在本文中得到了一个要处理的代码片段, 所以我添加了这个代码片段:

@override
  void dispose() {
    _disposeController();
    super.dispose();
  }

  Future<void> _disposeController() async{
    final GoogleMapController controller = await _controller.future;
    //controller.dispose();
  }
Run Code Online (Sandbox Code Playgroud)

但取消注释最后一行会出现此错误:

 The method 'dispose' isn't defined for the class 'GoogleMapController'.
Try correcting the name to the name of an existing method, or defining a method named 'dispose'.
Run Code Online (Sandbox Code Playgroud)

那么我该如何处置控制器呢?

flutter google-maps-flutter

4
推荐指数
1
解决办法
1万
查看次数

使用 google_maps_flutter 检查坐标是否在颤振中的多边形内

我在我的颤振项目中使用了 google_maps_flutter 库,我创建了一个多边形,但我想检查一个坐标是否在多边形内......我该怎么做?

那是谷歌小部件

GoogleMap(
    myLocationButtonEnabled: false,
    myLocationEnabled: true,
    mapToolbarEnabled: false,
    polygons: myPolygon(),
    mapType: MapType.normal,
    initialCameraPosition: _initialCamera,
    onMapCreated: _onMapCreated,
    onCameraMove: _onCameraMove,
    onCameraIdle: _onCameraIdle,
),
Run Code Online (Sandbox Code Playgroud)

请问如何检查坐标是否在多边形内

flutter flutter-dependencies google-maps-flutter

3
推荐指数
1
解决办法
740
查看次数

使用 google_maps_flutter 包在 Flutter 中绘制路线

我已经绘制了一张地图google_maps_flutter,上面有 2 个标记。我想在他们之间画一条路线。有谁能够帮助我?

当我使用@CopsOnRoad建议的那个时,我显示了图片。我希望路线是蓝线,这是最好的前进方向。

演示问题的图

flutter google-maps-flutter

2
推荐指数
1
解决办法
9941
查看次数

如何使用 Google Maps Flutter 默认显示地图标签

我认为我的问题与这里相同:

Flutter 在 Google 地图小部件中默认显示标记的 infoWindowText

然而,除了指向另一篇文章的链接之外,没有答案,这并不是我想要做的。

当我的地图在我的应用程序中打开时,它会正确显示标记,但我也希望在打开时默认显示所有标签...

在此输入图像描述

正如此处标记之一所示:

在此输入图像描述

我正在创建这样的标记:

 for (Location location in _locations) {
      final locationMarker = Marker(
          markerId: MarkerId(location.id),
          position: LatLng(location.geoY, location.geoX),
          infoWindow: InfoWindow(
            title: location.name,
          ),
          onTap: () => _onTap(location),
          icon: _mapMarkers.icon(location.slug),
          draggable: false);

      markers.add(locationMarker);
    }
Run Code Online (Sandbox Code Playgroud)

然后地图是这样的:

 Widget _map(Set<Marker> markers) => GoogleMap(
        mapType: MapType.normal,
        initialCameraPosition: CameraPosition(target: widget.mapCentre),
        markers: markers,
        ...
        onMapCreated: (controller) => _onMapCreated(controller, markers),
      );
Run Code Online (Sandbox Code Playgroud)

在 _onMapCreated 中,我尝试显示所有标签,但实际上仅显示标记列表中的最后一个:

 _onMapCreated(GoogleMapController controller, Set<Marker> markers) {
    if (mounted) {
      setState(() {
        _controller.complete(controller);
        controller.setMapStyle(_mapStyle);
        for (var marker in markers) …
Run Code Online (Sandbox Code Playgroud)

google-maps flutter google-maps-flutter

2
推荐指数
1
解决办法
8848
查看次数

Flutter - 启用位置和动画相机到当前位置

我的目标写在上面的标题中。

当我尝试使用已启用位置的应用程序时,给定的功能运行良好。但是当我尝试使用定位禁用时,它要求我打开定位,所以我打开了它但该功能不起作用。

我正在从 initState() 调用我的函数。

  firstLocation() async {
    await location.getLocation().then((LocationData locationData){
        //Sets the changing location in the Map Controller
        LatLng latLng = new LatLng(locationData.latitude, locationData.longitude);
        CameraUpdate cameraUpdate = CameraUpdate.newLatLngZoom(latLng, 15);
        mapController.animateCamera(cameraUpdate);
    });
  }
Run Code Online (Sandbox Code Playgroud)
@override
  void initState() {
    super.initState();
    firstLocation();
  }
Run Code Online (Sandbox Code Playgroud)

如果您想查看整个课程代码:

class UserMapState extends State<UserMap> {

  GoogleMapController mapController;
  // Location location = new Location();

  Map<PolylineId, Polyline> _mapPolylines = {};
  int _polylineIdCounter = 1;

  final List<LatLng> points = <LatLng>[];

  Set<Marker> _markers = {};

  LatLng _lastMapPosition; // CLASS MEMBER, MAP OF MARKS …
Run Code Online (Sandbox Code Playgroud)

location flutter google-maps-flutter

1
推荐指数
1
解决办法
3767
查看次数

如何在 Google Map Flutter 上显示小部件图标?

在我的应用程序中有一个谷歌地图。我为此使用了google_maps_flutter。我想在右上角添加通知图标。我尝试使用 Stack 但 Google Map 覆盖了图标。

这就是我要的

这是我在评论谷歌地图代码后实现的

这是我当前的屏幕,代码如下

代码

Scaffold(
  resizeToAvoidBottomInset: true,
  body: Stack(
    children: <Widget>[
      Positioned(
          top: 60,
          right: 40,
          child: IconButton(
            icon: new Image.asset(UIData.notificationIcon),
            onPressed: () {},
          )),
      GoogleMap(
          myLocationEnabled: true,
          myLocationButtonEnabled: true,
          mapType: MapType.normal,
          initialCameraPosition: _kGooglePlex,
          markers: Set<Marker>.of(markers.values),
          onMapCreated: (controller) {
            if (this.mounted)
              setState(() {
                myController = controller;
              });
          })
    ],
  ),
);
Run Code Online (Sandbox Code Playgroud)

google-maps dart flutter google-maps-flutter

1
推荐指数
1
解决办法
2087
查看次数

用户如何在谷歌地图上添加多个标记颤动

当用户长按地图时,用户如何添加多个标记。在这段代码中,我完成了单张地图。当用户长按地图时,它会自动添加一个标记,但我不知道如何在地图上添加多个标记。我尝试了很多代码,但没有得到正确的结果。希望你明白这个问题。你的小帮助可以让我开心。提前致谢。

这是我试过的代码:)

import 'package:flutter/material.dart';
import 'package:geocoder/geocoder.dart';
import 'dart:async';

import 'package:google_maps_flutter/google_maps_flutter.dart';

void main() => runApp(MyApp());

const kGoogleApiKey = "API_KEY";

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(title: "MAP", home: BspAddressmapscreen());
  }
}

class BspAddressmapscreen extends StatefulWidget {
  BspAddressmapscreen({Key key}) : super(key: key);

  @override
  _BspAddressmapscreenState createState() => _BspAddressmapscreenState();
}

class _BspAddressmapscreenState extends State<BspAddressmapscreen> {
  final homeScaffoldKey = GlobalKey<ScaffoldState>();
  Completer<GoogleMapController> _controller = Completer();

  @override
  void initState() {
    super.initState();
  }

  double zoomVal = 5.0;

  @override
  Widget build(BuildContext context) {
    return …
Run Code Online (Sandbox Code Playgroud)

google-maps-markers dart flutter flutter-layout google-maps-flutter

1
推荐指数
2
解决办法
5921
查看次数

滚动谷歌地图颤动时获取地图中心点

我正在我的应用程序中做一个应用程序。我正在使用谷歌地图 flutter,并且遇到了有关滚动的问题。当我滚动地图时,我想获取地图的中心点(长、纬度),也就是说,如果我滚动地图并停在某个位置,它将获取中心的位置点。

谁能建议如何解决这个问题?这可能非常有帮助,提前谢谢您..

location flutter google-maps-flutter

1
推荐指数
1
解决办法
1893
查看次数

Flutter 中的 Google 地图相机位置更新问题

我正在使用 Flutter 构建一个基于地图的应用程序。所以我使用谷歌地图包,一切正常。但是,我尝试添加一个 FloatingActionButton 以将地图重新​​定位到我的位置,但在这里,我遇到了问题。首先,地图没有重新定位到我的位置,其次,我收到了可怕的红色错误。这是代码、flutter doctor 和错误代码。

\n

我的代码:

\n
import 'package:flutter/material.dart';\nimport 'package:google_maps_flutter/google_maps_flutter.dart';\nimport 'package:provider/provider.dart';\nimport 'package:spotycar/providers/location_service.dart';\n\nimport '../../models/user_location.dart';\n\nclass MapWidget extends StatefulWidget {\n  MapWidget({@required Key key}) : super(key: key);\n\n  @override\n  _MapWidgetState createState() => _MapWidgetState();\n}\n\nvar locationClicked = false;\n\nclass _MapWidgetState extends State<MapWidget> {\n  @override\n  Widget build(BuildContext context) {\n    CameraUpdate cameraUpdate;\n    GoogleMapController mapController;\n    var location = Provider.of<UserLocation>(context);\n    final provider = Provider.of<LocationService>(context);\n    final double _zoom = 17.0;\n    final double _tilt = 37.0;\n    var _coord;\n\n    if (provider.loadedLocation) {\n      _coord = LatLng(location.latitude, location.longitude);\n      cameraUpdate = CameraUpdate.newCameraPosition(CameraPosition(\n        target: _coord,\n        bearing: …
Run Code Online (Sandbox Code Playgroud)

google-maps flutter google-maps-flutter

1
推荐指数
1
解决办法
1万
查看次数