Geolocation

TsgcHTMLComponent_Geolocation odczytuje pozycję urządzenia przez Geolocation API przeglądarki i przekazuje ją na serwer, jednorazowo lub w sposób ciągły, z widocznego lub z ukrytego panelu, w Delphi, C++ Builder, Lazarus i .NET.

TsgcHTMLComponent_Geolocation

Wybierz ShowUI i UpdateMode, ustaw WSSend lub Action, a następnie odczytaj właściwość HTML. Każdy odczyt trafia na serwer jako geo_lat, geo_lng, geo_accuracy i pozostałe pola geo_*.

Klasa komponentu

TsgcHTMLComponent_Geolocation

Renderuje

Panel lokalizacji lub panel ukryty + dziewięć pól ukrytych + skrypt wbudowany

Języki

Delphi, C++ Builder, Lazarus, .NET

Śledź pozycję w tle

Żadnej biblioteki do dołączenia i niczego pobieranego z CDN: pozycja pochodzi z Geolocation API przeglądarki. Udostępniaj stronę przez HTTPS lub z localhost podczas programowania, ponieważ przeglądarki udostępniają geolokalizację tylko w bezpiecznym kontekście.

uses
  sgcHTML_Component_Geolocation;

var
  oGeo: TsgcHTMLComponent_Geolocation;
begin
  oGeo := TsgcHTMLComponent_Geolocation.Create(nil);
  try
    oGeo.GeolocationID := 'deliveryGeo';
    oGeo.ShowUI := False;              // no visible panel
    oGeo.UpdateMode := gumContinuous;     // keep watching until stopped
    oGeo.MinIntervalMs := 30000;
    oGeo.MinDistanceMeters := 50;
    oGeo.AutoStart := True;
    oGeo.WSSend := True;               // push every reading over WebSocket

    WebModule.Response := oGeo.HTML;      // hidden fields + inline script
  finally
    oGeo.Free;
  end;
end;
// includes: sgcHTML_Component_Geolocation.hpp

TsgcHTMLComponent_Geolocation *oGeo = new TsgcHTMLComponent_Geolocation(NULL);
try
{
  oGeo->GeolocationID = "deliveryGeo";
  oGeo->ShowUI = false;
  oGeo->UpdateMode = gumContinuous;
  oGeo->MinIntervalMs = 30000;
  oGeo->MinDistanceMeters = 50;
  oGeo->AutoStart = true;
  oGeo->WSSend = true;

  String html = oGeo->HTML;   // hidden fields + inline script
}
__finally
{
  delete oGeo;
}
using esegece.sgcWebSockets;

var geo = new TsgcHTMLComponent_Geolocation();
geo.GeolocationID = "deliveryGeo";
geo.ShowUI = false;
geo.UpdateMode = TsgcHTMLGeolocationUpdateMode.gumContinuous;
geo.MinIntervalMs = 30000;
geo.MinDistanceMeters = 50;
geo.AutoStart = true;
geo.WSSend = true;

string html = geo.HTML;   // hidden fields + inline script

Kluczowe właściwości i metody

Składniki, po które sięgasz najczęściej.

ShowUI

True (domyślnie) renderuje przycisk lokalizacji, w trybie ciągłym przycisk zatrzymania, wiersz stanu z szerokością, długością geograficzną i dokładnością oraz opcjonalny odnośnik OpenStreetMap z ShowMapLink. False nie renderuje niczego widocznego, więc panel startuje z AutoStart lub przez el.sgcGeoStart() i el.sgcGeoStop().

UpdateMode

gumOnce (domyślnie) dostarcza jeden odczyt na start. gumContinuous śledzi pozycję do momentu zatrzymania, ograniczany przez MinIntervalMs (domyślnie 5000) i MinDistanceMeters (domyślnie 0).

Opcje pozycji

EnableHighAccuracy (domyślnie True), TimeoutMs (domyślnie 10000) i MaximumAgeMs (domyślnie 0) są przekazywane do przeglądarki przy każdym żądaniu.

FieldName

Prefiks dziewięciu ukrytych pól, domyślnie geo: szerokość geograficzna, długość geograficzna, dokładność, wysokość, dokładność wysokości, kierunek, prędkość, znacznik czasu oraz geo_error.

WSSend / Action / RedirectURL

Wysyłaj każdy odczyt przez WebSocket sgc, przesyłaj go POST-em do Action albo przekieruj na RedirectURL z pozycją w ciągu zapytania. TargetSelector zapisuje lat,lng w innym elemencie strony.

Błędy

geo_error zgłasza permission_denied, position_unavailable, timeout, insecure_context lub not_supported. Przy każdym odczycie wyzwalane jest zdarzenie DOM sgcGeolocation:position.

Poznawaj dalej

Pomoc onlinePełna dokumentacja API i przewodnik użytkowania tego komponentu.
Wszystkie komponenty sgcHTMLPrzejrzyj pełną matrycę funkcji 80+ komponentów.
Pobierz bezpłatną wersję próbną30-dniowa wersja próbna zawiera projekty demonstracyjne 60.HTML.
CennikLicencje Single, Team i Site z pełnym kodem źródłowym.
Najkorzystniejsza oferta: All-AccessWszystkie produkty eSeGeCe, ze wsparciem Premium w cenie, już od €1,059 rocznie.
Zobacz cennik All-Access

Gotowy, aby zacząć?

Pobierz bezpłatną wersję próbną i zacznij budować interfejsy webowe w Delphi, C++ Builder i .NET.