【问题标题】:Flutter get coordinates from google mapsFlutter 从谷歌地图获取坐标
【发布时间】:2018-11-20 16:53:25
【问题描述】:

我使用包 google_maps_flutter 在我的应用程序中使用 Google 地图。我的问题是如何设置一个监听器,当我在地图上按下以获得这个地方的协调时显示。我在文档中找不到任何内容。 我发现的唯一东西是我用来设置标记侦听器的 controllerMap,它有一个方法, .addListener(listener)

有什么想法吗?

【问题讨论】:

  • github.com/flutter/plugins/tree/master/packages/… 你应该看看这些例子。该插件处于 alpha 版本。以下是如何添加点击监听器
  • 我看过但没有找到任何相关的东西。你可以说得更详细点吗?我发现并使用的唯一点击是 onMarkerTapped
  • 如果它不在那里,它可能没有实现github.com/flutter/plugins/blob/…GoogleMapController 目前功能很少。该插件处于 alpha 阶段

标签: google-maps dart flutter


【解决方案1】:

我已经使用下面的 onMarkerTapped 回调方法解决了这个问题:

注意:下面的 mapController 是 GoogleMap 控制器的一个实例

 mapController.**onMarkerTapped**.add((marker){

      String title= marker.options.infoWindowText.title;
      String latitude= marker.options.position.latitude.toString();
      String longitude= marker.options.position.longitude.toString();

  });

【讨论】:

    【解决方案2】:

    google map 插件有很多错误:),我更喜欢使用这个插件:flutter_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;
        });
      }
    }
    

    【讨论】:

      【解决方案3】:

      在目前的文档中,我只对上面给出的@lionelsanou 和@Pradeep 的例子做了如下改动:

        String latitude= marker.values.first.position.toString();
        String longitude= marker.values.last.position.toString();
      

      它对我有用。

      【讨论】:

        【解决方案4】:

        此功能目前在 2.0 版的 google Flutter 插件中不可用,但是有两个拉取请求添加了此功能。

        拉取请求 1121 有关于如何使用点击功能的示例代码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-06
          • 1970-01-01
          相关资源
          最近更新 更多