我在应用程序中使用包google_maps_flutter
来使用谷歌地图。我的问题是如何设置一个监听器,当我按下地图时显示,以获得这个地方的协调。我在文件中找不到任何东西。我唯一发现的是controllerMap,我用它来设置标记侦听器,它有一个方法,.addListener(listener)
知道吗?
我已经使用下面的onMarkerTapped回调方法解决了这个问题:
注意:下面的mapController是GoogleMap Controller 的一个实例
mapController.**onMarkerTapped**.add((marker){
String title= marker.options.infoWindowText.title;
String latitude= marker.options.position.latitude.toString();
String longitude= marker.options.position.longitude.toString();
});
谷歌地图插件有很多错误:(,我更喜欢使用这个插件:flatter_map
完整示例:
import 'package:location/location.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:latlong/latlong.dart';
class ContactPage extends StatefulWidget {
@override
ContactPageState createState() => new ContactPageState();
}
class ContactPageState extends State<ContactPage>
with TickerProviderStateMixin {
static LatLng myLocation = new LatLng(51.5, -0.09);
@override
void initState() {
super.initState();
setState(() {
new LatLng(51.5, -0.09);
});
}
@override
Widget build(BuildContext context) {
Size screenSize = MediaQuery.of(context).size;
double heigh = screenSize.height;
TextStyle whiteStyle = new TextStyle(fontSize: 20.0, color: Colors.white);
return new Directionality(
textDirection: TextDirection.rtl,
child: new Container(
padding: new EdgeInsets.only(bottom: 10.0, left: 1.0, right: 1.0),
color: Colors.white,
child: new FlutterMap(
options: new MapOptions(
center: myLocation,
zoom: 15.0,
maxZoom: 15.0,
minZoom: 3.0,
onTap: _handleTap),
layers: [
new TileLayerOptions(
urlTemplate:
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
subdomains: ['a', 'b', 'c']),
new MarkerLayerOptions(markers: markers)
],
)
)),
);
}
_handleTap(LatLng point) {
setState(() {
myLocation = point;
});
}
}
该功能目前在google flutter插件的2.0版本中不可用,但有两个pull请求添加了该功能。
- 1121
- 941
Pull请求1121有关于如何使用tap功能的示例代码。
在当前文档中,我只对上面给出的@lionelsanou和@Pradeep的示例进行了以下更改:
String latitude= marker.values.first.position.toString();
String longitude= marker.values.last.position.toString();
它对我有效。