我使用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) 我在我的项目中使用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)
那么我该如何处置控制器呢?
我在我的颤振项目中使用了 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)
请问如何检查坐标是否在多边形内
我已经绘制了一张地图google_maps_flutter
,上面有 2 个标记。我想在他们之间画一条路线。有谁能够帮助我?
当我使用@CopsOnRoad建议的那个时,我显示了图片。我希望路线是蓝线,这是最好的前进方向。
我认为我的问题与这里相同:
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) 我的目标写在上面的标题中。
当我尝试使用已启用位置的应用程序时,给定的功能运行良好。但是当我尝试使用定位禁用时,它要求我打开定位,所以我打开了它但该功能不起作用。
我正在从 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) 在我的应用程序中有一个谷歌地图。我为此使用了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) 当用户长按地图时,用户如何添加多个标记。在这段代码中,我完成了单张地图。当用户长按地图时,它会自动添加一个标记,但我不知道如何在地图上添加多个标记。我尝试了很多代码,但没有得到正确的结果。希望你明白这个问题。你的小帮助可以让我开心。提前致谢。
这是我试过的代码:)
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
我正在我的应用程序中做一个应用程序。我正在使用谷歌地图 flutter,并且遇到了有关滚动的问题。当我滚动地图时,我想获取地图的中心点(长、纬度),也就是说,如果我滚动地图并停在某个位置,它将获取中心的位置点。
谁能建议如何解决这个问题?这可能非常有帮助,提前谢谢您..
我正在使用 Flutter 构建一个基于地图的应用程序。所以我使用谷歌地图包,一切正常。但是,我尝试添加一个 FloatingActionButton 以将地图重新定位到我的位置,但在这里,我遇到了问题。首先,地图没有重新定位到我的位置,其次,我收到了可怕的红色错误。这是代码、flutter doctor 和错误代码。
\n我的代码:
\nimport '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)