Xamarin problem z dodawaniem pinow

0

Witam chciałbym z tego kodu zrobic dodawanie pinow do mapy z poziomu formularza. Udalo mi się z poziomu kliknięcia, ale nie mam pomyslu jak przerobic kod zeby mozna bylo wpisywac wspolrzedne do formularza. Macie jakies porady?

 public void OnMapClicked(object sender, MapClickedEventArgs e)
        {

            Pin pin = new Pin
            {

                Label = "Nazwa",
                Address = "adres",
                Type = PinType.SavedPin,
                Position = new Position(e.Position.Latitude, e.Position.Longitude)
            };
            positions.Add(new Position(e.Position.Latitude, e.Position.Longitude));
            Polyline polyline = new Polyline
            {
                StrokeColor = Color.Blue,
                StrokeWidth = 6
            };
            foreach (Position pos in positions)
            {
                polyline.Geopath.Add(pos);
                
            }
            maps.Pins.Add(pin);
            maps.MapElements.Add(polyline);
        }
1

A z czym masz konkretnie problem?

Robisz sobie dwa Entry z nazwami dajmy na to entry1 i entry2 dla długości i szerokości geograficznej i jakiś przycisk zatwierdzający i w jego obsłudze zapewne coś w stylu:

var pin = new Pin
{
    Label = "Nazwa",
    Address = "adres",
    Type = PinType.SavedPin,
    Position = new Position(Convert.ToDouble(entry1.Text), Convert.ToDouble(entry2.Text))
};

maps.Pins.Add(pin);
0
            var json = JsonConvert.SerializeObject(pin);

            var content = new StringContent(json, Encoding.UTF8, "application/json");

            HttpClient client = new HttpClient();

            var result = await client.PostAsync("URL", content);

            if (result.StatusCode == HttpStatusCode.Created)
            {
                await DisplayAlert("Komunikat", "Dodanie puntku przebiegło pomyślnie", "Anuluj");
            }

@Ktos
Mam taki kodzik do POST-owania. W jaki sposob wysylac do bazy danych wspolrzędne (przez API) ? Tak jak to robie teraz? Chcialbym, żeby byly widoczne wspolrzędne w bazie. W bazie mam po prostu X - szerokosc, Y - dlugosc

0

Kod jest okej - pytanie, jakich danych wymaga twoje API, bo obecnie przekazujesz do niej cały obiekt Pin (który nie do końca wiem jak się serializuje).

0
Ktos napisał(a):

Kod jest okej - pytanie, jakich danych wymaga twoje API, bo obecnie przekazujesz do niej cały obiekt Pin (który nie do końca wiem jak się serializuje).

wymaga wspolrzędnych, nazwe pinu i adres pinu

1

Więc zwróć uwagę, ze jeżeli sobie zserializujesz do JSON-a obiekt "pin" to dostaniesz coś w stylu:

{"Address":"adres","Label":"Nazwa","Position":{"Latitude":0.0,"Longitude":0.0},"Type":2,"Id":null,"MarkerId":null,"AutomationId":null,"ClassId":null,"Effects":[],"ParentView":null,"StyleId":null,"LogicalChildren":[],"RealParent":null,"Parent":null,"EffectControlProvider":null,"Platform":null,"Dispatcher":{},"BindingContext":null}

Jak chcesz łatwiej, to możesz na przykład skorzystać z prostej klasy anonimowej, na przykład:

var x = JsonConvert.SerializeObject(new { name = pin.Label, latitude = pin.Position.Latitude, longitude = pin.Position.Longitude });

wygeneruje ci JSON-a takiej postaci:

{"name":"Nazwa","latitude":0.0,"longitude":0.0}

Możesz sobie tak dobrać, aby dane, które wysyłasz były tymi, których oczekuje twoje API.

1 użytkowników online, w tym zalogowanych: 0, gości: 1