如何使用Flutter / Dart添加标记点击/点击地图?

时间:2019-01-18 22:17:00

标签: google-maps dart flutter

我刚刚开始研究颤振/飞镖。来自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插件对此没有提及。通过点击地图可以添加标记,还是尚不可用?

谢谢。

4 个答案:

答案 0 :(得分:2)

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

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),
  ));
});

}

答案 1 :(得分:0)

您要使用mapcontroller并将其用于ex:

**GoogleMapController controller;**

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

答案 2 :(得分:0)

我的问题也是如此。 您必须拉google_map分支,该分支提供像onMapClickListener等的侦听器。 也许这可以帮助您: https://github.com/flutter/plugins/pull/1121

致谢

答案 3 :(得分:0)

      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"],));
    });