-
Notifications
You must be signed in to change notification settings - Fork 98
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to get Map coordinates on taping on the map #51
Comments
You can use the mapbox-maps-flutter/example/lib/gestures.dart Line 128 in 308d25d
|
@geisterfurz007 its not giving the exact latitude and longitude of the tapped location in the map its returning the coordinates of the screen. |
@Shiba-Kar That's what the returned class wants you to believe. If you print the values, you should see globe coordinates. If that is not the case, you can always convert between screen and map coordinates with the respective methods on |
How to |
import 'package:mapbox_maps_flutter/mapbox_maps_flutter.dart';
import 'package:turf/turf.dart' as turf;
// Callback for MapWidget onTapListener
Future<void> onTapListener(ScreenCoordinate coord) async {
// coord is actually map coordinates, and conv is converted value to actual screen coordinates.
final ScreenCoordinate conv = await _mapboxMap!.pixelForCoordinate(
turf.Point(
coordinates: turf.Position(
coord.y, coord.x,
),
).toJson(),
);
} |
@geisterfurz007 @LjubiTech-Maxko thanks !!! 👍🏼 |
Future _addPin(ScreenCoordinate screenCoordinate) async {
var conv = await _mapboxMap.coordinateForPixel(screenCoordinate);
final coordinates = conv['coordinates']! as List<Object?>;
var x = coordinates.map((e) => e as num).toList();
var position = Position.fromJson(x);
await _positionMarker(
"totempole", "assets/images/user_totem.png", position);
}
Future _positionMarker(
String name, String assetName, Position position) async {
final ByteData bytes = await rootBundle.load(assetName);
var list = bytes.buffer.asUint8List();
var x = await _mapboxMap.annotations.createPointAnnotationManager();
var xx = await x.create(
PointAnnotationOptions(
image: list,
geometry: Point(coordinates: position).toJson(),
),
);
} Does not place the marker where the tap is registered it is positioned very off from the tap place !!. |
Again: You receive map coordinates from the callback, not screen coordinates. You do not have to convert anything. The class is called ScreenCoordinate but that is not accurate. Do yourself and others in the thread a favour and print the value you get from the callback to verify this and understand how to continue to work with them. |
@geisterfurz007 {x: 43.59772105745384, y: 52.233343976845674} |
No description provided.
The text was updated successfully, but these errors were encountered: