Filippos Ser
Filippos Ser

Reputation: 386

Flutter get coordinates from google maps

I use the package google_maps_flutter to use Google maps in my app. My problem is how to set a listener, show when I press in the map to get the coordination of this place. I don't find anything in documentation. The only thing which I find is with controllerMap, which I use to set marker listener, is that it has a method, .addListener(listener)

Any idea?

Upvotes: 1

Views: 10660

Answers (4)

victwise
victwise

Reputation: 806

With the current documentation, I only made the following change to the example of @lionelsanou and @Pradeep given above:

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

and it worked for me.

Upvotes: 1

Jason
Jason

Reputation: 2695

This functionality is currently not available in version 2.0 of the google flutter plugin, however there are two pull requests that have added this functionality.

Pull request 1121 has example code on how to use the tap functionality.

Upvotes: 1

lionelsanou
lionelsanou

Reputation: 41

I have solved the problem using the onMarkerTapped callback methods below:

Note: mapController below is an instance of the 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();

  });

Upvotes: 3

Yousuf AL-Mawali
Yousuf AL-Mawali

Reputation: 257

google map plugin has a lot of errors:), I prefer using this plugin : flutter_map

full example :

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

Upvotes: 2

Related Questions