libosmscout 1.1.1
Loading...
Searching...
No Matches
LocationService.h
Go to the documentation of this file.
1#ifndef OSMSCOUT_LOCATIONSERVICE_H
2#define OSMSCOUT_LOCATIONSERVICE_H
3
4/*
5 This source is part of the libosmscout library
6 Copyright (C) 2009 Tim Teulings
7
8 This library is free software; you can redistribute it and/or
9 modify it under the terms of the GNU Lesser General Public
10 License as published by the Free Software Foundation; either
11 version 2.1 of the License, or (at your option) any later version.
12
13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public
19 License along with this library; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21*/
22
23#include <list>
24#include <memory>
25
27
29
32
33namespace osmscout {
34
40 class OSMSCOUT_API POIFormSearchParameter CLASS_FINAL
41 {
42 private:
43 std::string adminRegionSearchString;
44 std::string poiSearchString;
45
46 bool adminRegionOnlyMatch;
47 bool poiOnlyMatch;
48
49 bool partialMatch;
50
51 StringMatcherFactoryRef stringMatcherFactory;
52
53 size_t limit;
54
55 BreakerRef breaker;
56 public:
58
59 std::string GetAdminRegionSearchString() const;
60 std::string GetPOISearchString() const;
61
63 bool GetPOIOnlyMatch() const;
64
65 bool GetPartialMatch() const;
66
68
69 size_t GetLimit() const;
70
71 void SetStringMatcherFactory(const StringMatcherFactoryRef& stringMatcherFactory);
72
73 void SetAdminRegionSearchString(const std::string& adminRegionSearchString);
74 void SetPOISearchString(const std::string& poiSearchString);
75
76 void SetAdminRegionOnlyMatch(bool adminRegionOnlyMatch);
77 void SetPOIOnlyMatch(bool poiOnlyMatch);
78
79 void SetPartialMatch(bool partialMatch);
80
81 void SetLimit(size_t limit);
82
83 void SetBreaker(BreakerRef &breaker);
85 bool IsAborted() const;
86 };
87
93 class OSMSCOUT_API LocationFormSearchParameter CLASS_FINAL
94 {
95 private:
96 std::string adminRegionSearchString;
97 std::string postalAreaSearchString;
98 std::string locationSearchString;
99 std::string addressSearchString;
100
101 bool adminRegionOnlyMatch;
102 bool postalAreaOnlyMatch;
103 bool locationOnlyMatch;
104 bool addressOnlyMatch;
105
106 bool partialMatch;
107
108 StringMatcherFactoryRef stringMatcherFactory;
109 size_t limit;
110
111 BreakerRef breaker;
112 public:
114
115 std::string GetAdminRegionSearchString() const;
116 std::string GetPostalAreaSearchString() const;
117 std::string GetLocationSearchString() const;
118 std::string GetAddressSearchString() const;
119
124
125 bool GetPartialMatch() const;
126
128
129 size_t GetLimit() const;
130
131 void SetStringMatcherFactory(const StringMatcherFactoryRef& stringMatcherFactory);
132
133 void SetAdminRegionSearchString(const std::string& adminRegionSearchString);
134 void SetPostalAreaSearchString(const std::string& postalAreaSearchString);
135 void SetLocationSearchString(const std::string& locationSearchString);
136 void SetAddressSearchString(const std::string& addressSearchString);
137
138 void SetAdminRegionOnlyMatch(bool adminRegionOnlyMatch);
139 void SetPostalAreaOnlyMatch(bool postalAreaOnlyMatch);
140 void SetLocationOnlyMatch(bool locationOnlyMatch);
141 void SetAddressOnlyMatch(bool addressOnlyMatch);
142
143 void SetPartialMatch(bool partialMatch);
144
145 void SetLimit(size_t limit);
146
147 void SetBreaker(BreakerRef &breaker);
149 bool IsAborted() const;
150 };
151
157 class OSMSCOUT_API LocationStringSearchParameter CLASS_FINAL
158 {
159 private:
160 AdminRegionRef defaultAdminRegion;
161
162 bool searchForLocation=true;
163 bool searchForPOI=true;
164
165 bool adminRegionOnlyMatch=false;
166 bool poiOnlyMatch=false;
167 bool locationOnlyMatch=false;
168 bool addressOnlyMatch=false;
169
170 bool partialMatch=false;
171
172 std::string searchString;
173 StringMatcherFactoryRef stringMatcherFactory;
174
175 size_t limit=100;
176
177 BreakerRef breaker;
178
179 public:
180 explicit LocationStringSearchParameter(const std::string& searchString);
181
183
185 bool GetSearchForPOI() const;
186
188 bool GetPOIOnlyMatch() const;
191
192 bool GetPartialMatch() const;
193
194 std::string GetSearchString() const;
195
197
198 size_t GetLimit() const;
199
200 void SetDefaultAdminRegion(const AdminRegionRef& adminRegion);
201
202 void SetSearchForLocation(bool searchForLocation);
203 void SetSearchForPOI(bool searchForPOI);
204
205 void SetAdminRegionOnlyMatch(bool adminRegionOnlyMatch);
206 void SetPOIOnlyMatch(bool poiOnlyMatch);
207 void SetLocationOnlyMatch(bool locationOnlyMatch);
208 void SetAddressOnlyMatch(bool addressOnlyMatch);
209
210 void SetPartialMatch(bool partialMatch);
211
212 void SetStringMatcherFactory(const StringMatcherFactoryRef& stringMatcherFactory);
213
214 void SetLimit(size_t limit);
215
216 void SetBreaker(BreakerRef &breaker);
218 bool IsAborted() const;
219 };
220
258
280 {
281 private:
282 DatabaseRef database;
283
284 public:
285 explicit LocationService(const DatabaseRef& database);
286
288
290 std::map<FileOffset,AdminRegionRef >& refs) const;
291
293 const PostalArea& postalArea,
294 LocationVisitor& visitor) const;
295
297 POIVisitor& visitor) const;
298
300 const PostalArea& postalArea,
301 const Location& location,
302 AddressVisitor& visitor) const;
303
304 bool SearchForLocationByString(const LocationStringSearchParameter& searchParameter,
305 LocationSearchResult& result) const;
306
307 bool SearchForLocationByForm(const LocationFormSearchParameter& searchParameter,
308 LocationSearchResult& result) const;
309
310 bool SearchForPOIByForm(const POIFormSearchParameter& searchParameter,
311 LocationSearchResult& result) const;
312
313 };
314
318 using LocationServiceRef = std::shared_ptr<LocationService>;
319}
320
321
322#endif
#define OSMSCOUT_API
Definition CoreImportExport.h:45
Definition Location.h:199
Definition Location.h:59
Definition Location.h:91
Definition Area.h:88
void SetLimit(size_t limit)
std::string GetAdminRegionSearchString() const
StringMatcherFactoryRef GetStringMatcherFactory() const
void SetPOISearchString(const std::string &poiSearchString)
void SetAddressSearchString(const std::string &addressSearchString)
void SetAddressOnlyMatch(bool addressOnlyMatch)
size_t GetLimit() const
BreakerRef GetBreaker() const
void SetStringMatcherFactory(const StringMatcherFactoryRef &stringMatcherFactory)
void SetAdminRegionOnlyMatch(bool adminRegionOnlyMatch)
std::string GetSearchString() const
void SetLocationOnlyMatch(bool locationOnlyMatch)
bool IsAborted() const
std::string GetLocationSearchString() const
std::string GetPostalAreaSearchString() const
void SetPostalAreaSearchString(const std::string &postalAreaSearchString)
void SetAdminRegionSearchString(const std::string &adminRegionSearchString)
void SetLocationSearchString(const std::string &locationSearchString)
bool GetAdminRegionOnlyMatch() const
LocationStringSearchParameter(const std::string &searchString)
void SetSearchForPOI(bool searchForPOI)
void SetPartialMatch(bool partialMatch)
void SetSearchForLocation(bool searchForLocation)
void SetBreaker(BreakerRef &breaker)
AdminRegionRef GetDefaultAdminRegion() const
std::string GetAddressSearchString() const
bool GetSearchForLocation() const
void SetPOIOnlyMatch(bool poiOnlyMatch)
bool GetPOIOnlyMatch() const
void SetPostalAreaOnlyMatch(bool postalAreaOnlyMatch)
bool GetPartialMatch() const
bool GetPostalAreaOnlyMatch() const
bool GetLocationOnlyMatch() const
bool GetSearchForPOI() const
void SetDefaultAdminRegion(const AdminRegionRef &adminRegion)
std::string GetPOISearchString() const
bool GetAddressOnlyMatch() const
Definition Location.h:147
Definition LocationService.h:237
LocationRef location
Definition LocationService.h:243
MatchQuality postalAreaMatchQuality
Definition LocationService.h:242
MatchQuality addressMatchQuality
Definition LocationService.h:248
AdminRegionRef adminRegion
Definition LocationService.h:239
MatchQuality poiMatchQuality
Definition LocationService.h:246
POIRef poi
Definition LocationService.h:245
MatchQuality adminRegionMatchQuality
Definition LocationService.h:240
MatchQuality locationMatchQuality
Definition LocationService.h:244
AddressRef address
Definition LocationService.h:247
bool operator==(const Entry &other) const
PostalAreaRef postalArea
Definition LocationService.h:241
bool operator<(const Entry &other) const
Definition LocationService.h:227
MatchQuality
Definition LocationService.h:230
@ none
Definition LocationService.h:233
@ candidate
Definition LocationService.h:232
@ match
Definition LocationService.h:231
bool limitReached
Definition LocationService.h:256
std::list< Entry > results
Definition LocationService.h:255
bool SearchForLocationByForm(const LocationFormSearchParameter &searchParameter, LocationSearchResult &result) const
bool SearchForPOIByForm(const POIFormSearchParameter &searchParameter, LocationSearchResult &result) const
bool VisitAdminRegionLocations(const AdminRegion &region, const PostalArea &postalArea, LocationVisitor &visitor) const
bool SearchForLocationByString(const LocationStringSearchParameter &searchParameter, LocationSearchResult &result) const
bool ResolveAdminRegionHierachie(const AdminRegionRef &adminRegion, std::map< FileOffset, AdminRegionRef > &refs) const
bool VisitAdminRegions(AdminRegionVisitor &visitor) const
bool VisitAdminRegionPOIs(const AdminRegion &region, POIVisitor &visitor) const
LocationService(const DatabaseRef &database)
bool VisitLocationAddresses(const AdminRegion &region, const PostalArea &postalArea, const Location &location, AddressVisitor &visitor) const
Definition Location.h:164
Definition Location.h:131
Definition Location.h:39
std::shared_ptr< LocationService > LocationServiceRef
Definition LocationService.h:318
Definition Area.h:39
std::shared_ptr< Address > AddressRef
Definition Location.h:191
std::shared_ptr< Breaker > BreakerRef
Definition Breaker.h:64
std::shared_ptr< PostalArea > PostalAreaRef
Definition Location.h:45
std::shared_ptr< Database > DatabaseRef
Reference counted reference to an Database instance.
Definition Database.h:555
std::shared_ptr< StringMatcherFactory > StringMatcherFactoryRef
Definition StringMatcher.h:67
std::shared_ptr< POI > POIRef
Definition Location.h:123
std::shared_ptr< Location > LocationRef
Definition Location.h:156
std::shared_ptr< AdminRegion > AdminRegionRef
Definition Location.h:83