Я пытался отправить смс после закрытия карты.в настоящее время единственное решение, которое я нашел, это отправить смс, когда я закончу перетаскивать новое местоположение.но он посылает смс все время после замены маркера ... Я хочу только один законченный смс с последней позиции.Я попытался вставить (onAnnotationDragEnd.listen) в id == 1, чтобы активировать функцию только тогда, когда карта закрыта, но она работает только после закрытия приложения один раз.Это должно быть открыто в другое время для работы ... чтобы быть ясным, я просто ищу, как запустить просмотр карты -> перетащить новую позицию -> закрыть вид карты -> отправить смс с последней позиции.
вот плагин: https://pub.dartlang.org/packages/map_view
вот функция
showMap() {
mapView.show(
new MapOptions(
mapViewType: MapViewType.hybrid,
showUserLocation: true,
initialCameraPosition: new CameraPosition(
new Location(lathome,longhome),18.0),
title: "change location"),
toolbarActions: [new ToolbarAction("close", 1)]);
StreamSubscription sub = mapView.onMapReady.listen((_) {
mapView.addMarker(
new Marker("4", "Home",lathome,longhome,draggable: true, //
color:Colors.orangeAccent, markerIcon: new MarkerIcon(
"assets/home_tag_orange.png", //Asset to be used as icon
width: 130.0, //New width for the asset
height: 130.0, // New height for the asset
),));
mapView.onAnnotationDragEnd.listen((markerMap) {
var marker = markerMap.keys.last;
var location = markerMap[marker]; // The updated position of the marker.
print("Annotation ${marker.id} moved to ${location.latitude} , ${location
.longitude}");
new SmsSender().sendSms(new SmsMessage(phonenumber,'${location.latitude.toStringAsFixed(6)}",${location.longitude.toStringAsFixed(6)}'));
});
mapView.zoomToFit(padding: 500);
});
sub = mapView.onTouchAnnotation
.listen((annotation) => print("annotation ${annotation.id} tapped"));
compositeSubscription.add(sub);
sub = mapView.onMapTapped
.listen((location) => print("Touched location $location"));
compositeSubscription.add(sub);
sub = mapView.onCameraChanged.listen((cameraPosition) =>
this.setState(() => this.cameraPosition = cameraPosition));
compositeSubscription.add(sub);
sub = mapView.onToolbarAction.listen((id) {
print("Toolbar button id = $id");
if (id == 1) {
_handleDismiss();
}
});
compositeSubscription.add(sub);
sub = mapView.onInfoWindowTapped.listen((marker) {
print("Info Window Tapped for ${marker.title}");
});
compositeSubscription.add(sub);
}