Misschien mis ik iets overduidelijks maar volgens mij is dit eenvoudig te regelen met de EnterRegion/ExitRegion events
Code:
procedure TForm2.DoAddRegion(ALatitude, ALongitude: TLocationDegrees;
ARadius: TLocationDistance; AName: string);
begin
LocationSensor1.AddRegion(TLocationRegion.Create(
TLocationCoord2D.Create(51.438231, 5.477976), ARadius, AName));
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
//Ben er hier van uit gegaan dat 51.438231, 5.477976 het middelpunt van Eindhoven is
DoAddRegion(51.438231, 5.477976, BaseOffset, 'Eindhoven');
end;
procedure TForm2.LocationSensor1EnterRegion(Sender: TObject;
const Region: TLocationRegion);
begin
//Hier harde controle, denk dat je dit mogelijk in een db of
//dictionary wilt opzoeken om te bepalen wat je gaat tonen
//ipv elke plaats hardcoded er in zetten ;)
if Region.ID = 'Eindhoven' then
//Toon info
end;
procedure TForm2.LocationSensor1ExitRegion(Sender: TObject;
const Region: TLocationRegion);
begin
//Verberg info?
end;
BaseOffset is in het form als constante gedefinieerd met de waarde 20000.
Radius van de region is van het type TLocationDistance waarvan de documentatie het volgende zegt:
Distance between two geographic points measured in meters
Bookmarks