【问题标题】:How to add a marker tap/click on map using Flutter/Dart?如何使用 Flutter/Dart 在地图上添加标记点击/单击?
【发布时间】:2019-06-13 04:48:21
【问题描述】:

我刚刚开始研究颤振/飞镖。来自 HTML5/Javascript,我想知道什么相当于:

google.maps.event.addListener(map, 'click', function(event) {
 placeMarker(event.latLng);
});

function placeMarker(location) {
var marker = new google.maps.Marker({
    position: location, 
    map: map
});

}

我浏览了整个互联网,发现了许多添加标记的示例,但不是在地图点击上。(例如Example 1Example 2)。 google_maps_flutter 插件还没有提到任何关于此的内容。是否可以通过点击地图添加标记,或者这仍然不可用?

提前致谢。

【问题讨论】:

  • @Mawg,这个问题已经得到解答。见下文。

标签: google-maps dart flutter


【解决方案1】:
      List _markers = List.generate(10, (index) {
      Map result = results[index];
      Map location = result["geometry"]["location"];
      LatLng latLngMarker = LatLng(location["lat"], location["lng"]);

      return Marker(
          markerId: MarkerId("marker$index"),
          position: latLngMarker,
          onTap: () {
                     //Your code here...
                    },
          infoWindow: InfoWindow(title: result["name"],));
    });

   

【讨论】:

    【解决方案2】:

    plugin 终于为GoogleMap 类添加了onTap 属性。

    final ArgumentCallback<LatLng> onTap
    

    例子:

    GoogleMap(
        markers: _markers,
        initialCameraPosition: _theSecretLocation,
        onMapCreated: (GoogleMapController controller) {
          _controller.complete(controller);
        },
        onTap: _handleTap,
      ),
      ...
    
     _handleTap(LatLng point) {
    setState(() {
      _markers.add(Marker(
        markerId: MarkerId(point.toString()),
        position: point,
        infoWindow: InfoWindow(
          title: 'I am a marker',
        ),
        icon:
            BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueMagenta),
      ));
    });
    }
    

    【讨论】:

    • _handleTap 接受一个参数,但你的 onTap 没有传递任何东西,那么它是如何工作的呢?
    • 我不确定它叫什么,但该语法在 dart 中有效。或者你也可以这样做onTap:(x)=&gt; _handleTap(x),
    【解决方案3】:

    你想把地图控制器用于前:

    **GoogleMapController controller;**
    
    **controller.onMarkerTapped.add((Marker marker){/...your code.../);**
    

    【讨论】:

    • 谢谢,但我试图在点击地图时放置一个新标记,而不是在点击标记时触发操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2014-08-07
    • 2011-10-06
    • 2020-03-12
    • 2016-06-12
    • 1970-01-01
    相关资源
    最近更新 更多