Javascript 颤振-谷歌地图,不显示我的位置
它似乎把所有的东西都写对了,但我不明白为什么它没有在地图上显示我的位置 为什么它没有显示我的位置Javascript 颤振-谷歌地图,不显示我的位置,javascript,flutter,google-maps-markers,Javascript,Flutter,Google Maps Markers,它似乎把所有的东西都写对了,但我不明白为什么它没有在地图上显示我的位置 为什么它没有显示我的位置 import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; class MyMap extends StatefulWidget { @override MyMapState createState() => MyMapState(); }
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
class MyMap extends StatefulWidget {
@override
MyMapState createState() => MyMapState();
}
class MyMapState extends State<MyMap> {
GoogleMapController mapController;
final LatLng _center = const LatLng(50.006406, 36.236484);
void _onMapCreated(GoogleMapController controller) {
mapController = controller;
mapController.addMarker(
MarkerOptions(
position: LatLng(50.006406, 36.236484),
infoWindowText: InfoWindowText('My Location', 'Office'),
icon: BitmapDescriptor.defaultMarker,
),
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Map'),
backgroundColor: Colors.green[700],
),
body: GoogleMap(
onMapCreated: _onMapCreated,
options: GoogleMapOptions(
scrollGesturesEnabled: true,
tiltGesturesEnabled: true,
rotateGesturesEnabled: true,
myLocationEnabled: true,
compassEnabled: true,
cameraPosition: CameraPosition(
target: _center,
zoom: 11.0,
),
),
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“包:google_-maps_-flatter/google_-maps_-flatter.dart”;
类MyMap扩展了StatefulWidget{
@凌驾
MyMapState createState()=>MyMapState();
}
类MyMapState扩展了状态{
谷歌地图控制器;
最终板条中心=常数板条(50.006406,36.236484);
void\u onMapCreated(谷歌地图控制器){
mapController=控制器;
mapController.addMarker(
标记选项(
位置:LatLng(50.006406,36.236484),
infoWindowText:infoWindowText(“我的位置”、“办公室”),
图标:BitmapDescriptor.defaultMarker,
),
);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“地图”),
背景颜色:颜色。绿色[700],
),
正文:谷歌地图(
onMapCreated:_onMapCreated,
选项:谷歌地图选项(
scrollGesturesEnabled:正确,
倾斜姿势启用:正确,
RotategeStureEnabled:正确,
myLocationEnabled:对,
同谋:是的,
cameraPosition:cameraPosition(
目标:_中心,
缩放:11.0,
),
),
),
);
}
}
您需要使用颤振软件包来跟踪用户的位置,并且需要将此功能添加到代码中
_getLocation() async {
var location = new Location();
try {
currentLocation = await location.getLocation();
print("locationLatitude: ${currentLocation.latitude}");
print("locationLongitude: ${currentLocation.longitude}");
setState(
() {}); //rebuild the widget after getting the current location of the user
} on Exception {
currentLocation = null;
}
}
应该在initState()函数中调用此函数,如下所示
@override
void initState() {
_getLocation();
super.initState();
}
别忘了将location包导入到代码中
import 'package:location/location.dart';
请遵循location软件包的安装指南,因为您需要在android的AndroidManifest.xml
和iphone的info.plist
中添加位置权限
位置包将负责在运行时向用户请求位置权限
希望有帮助,祝你好运你必须提供一个访问当前位置的权限
ios:Info.plist
<key>NSLocationWhenInUseUsageDescription</key>
<string>Application needs to access your current location</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>Application needs to access your current location</string>
n不使用时的位置说明
应用程序需要访问您的当前位置
N位置始终使用说明
应用程序需要访问您的当前位置
android:AndroidManifest.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
我建议使用以下方法。首先设置LocationData currentLocation;
var location=新位置();在global.Second中创建myCurrentLocation()方法。最后使用它initState()或单击按钮。不要忘记在AndroidMainfest.xml和这个类路径'com.google.gms:google services:4.3.2'android/build.gradle中导入
LocationData currentLocation;
var location = new Location();
myCurrentLocation() async{
try {
currentLocation = await location.getLocation();
print("locationLatitude: ${currentLocation.latitude.toString()}");
print("locationLongitude: ${currentLocation.longitude.toString()}");
} on PlatformException catch (e) {
if (e.code == 'PERMISSION_DENIED') {
String error = 'Permission denied';
print(error);
}
currentLocation = null;
}}
如果您想在地图上查看您的当前位置,并启用右下角的FAB功能,请确保您的GoogleMap小部件上的属性myLocationEnabled设置为true
[...]
body: GoogleMap(
myLocationEnabled: true,
[...]
)
你要求位置许可了吗?但是怎么做呢?
将这两行粘贴到你的Android清单文件中。如果在emulator中运行,则切换到物理设备。因为emulator无法显示您的当前位置。您好,欢迎使用SO,请提供有关您的代码的一些解释,它可以帮助其他可能正在寻找解决方案的用户理解:)首先,对不起,我的英语不好。您设置了LocationData currentLocation;var location=新位置();这是全局的,在您创建MyCurrentLocation方法之后。最后您使用方法initState或单击任何按钮来获取当前用户的loaction。不必感到抱歉,感谢您添加了更多的详细信息,现在只需编辑您的答案并将此信息添加到那里。@devpato这不是一个仅链接的答案。它有代码,甚至没有链接。如果你认为这段代码是错误的或没有用,正确的做法是否决投票。@RobertColumbia我点击了错误的选项,所以给了我。我的意思是,这个答案需要更多的解释,不仅仅是对位置的回答,而且不是对GoogleMap颤振小部件的正确回答
GoogleMap(
onMapCreated: _onMapCreated,
initialCameraPosition: CameraPosition(
target: _center,
zoom: 13.0,
),
myLocationEnabled: true,
onCameraMove: _onCameraMove,
myLocationButtonEnabled: true,