MCPcopy Create free account
hub / github.com/CesiumGS/cesium-native / geocode

Method geocode

CesiumIonClient/src/Connection.cpp:1176–1245  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1174}
1175
1176CesiumAsync::Future<Response<GeocoderResult>> Connection::geocode(
1177 GeocoderProviderType provider,
1178 GeocoderRequestType type,
1179 const std::string& query) const {
1180 const std::string endpointUrl = type == GeocoderRequestType::Autocomplete
1181 ? "v1/geocode/autocomplete"
1182 : "v1/geocode/search";
1183 std::string requestUrl =
1184 CesiumUtility::Uri::resolve(this->_apiUrl, endpointUrl);
1185 requestUrl = CesiumUtility::Uri::addQuery(requestUrl, "text", query);
1186
1187 // Add provider type to url
1188 switch (provider) {
1189 case GeocoderProviderType::Bing:
1190 requestUrl = CesiumUtility::Uri::addQuery(requestUrl, "geocoder", "bing");
1191 break;
1192 case GeocoderProviderType::Google:
1193 requestUrl = CesiumUtility::Uri::addQuery(requestUrl, "geocoder", "google");
1194 break;
1195 case GeocoderProviderType::Default:
1196 break;
1197 }
1198
1199 return this->ensureValidToken().thenImmediately(
1200 [pAssetAccessor = this->_pAssetAccessor,
1201 asyncSystem = this->_asyncSystem,
1202 requestUrl](Result<std::string>&& result) {
1203 if (!result.value) {
1204 return asyncSystem.createResolvedFuture(
1205 createNoValidTokenResponse<GeocoderResult>(std::move(result)));
1206 }
1207
1208 return pAssetAccessor
1209 ->get(
1210 asyncSystem,
1211 requestUrl,
1212 {{"Accept", "application/json"},
1213 {"Authorization", *result.value}})
1214 .thenImmediately(
1215 [](std::shared_ptr<CesiumAsync::IAssetRequest>&& pRequest) {
1216 const IAssetResponse* pResponse = pRequest->response();
1217 if (!pResponse) {
1218 return createEmptyResponse<GeocoderResult>();
1219 }
1220
1221 if (pResponse->statusCode() < 200 ||
1222 pResponse->statusCode() >= 300) {
1223 return createErrorResponse<GeocoderResult>(pResponse);
1224 }
1225
1226 rapidjson::Document d;
1227 if (!parseJsonObject(pResponse, d)) {
1228 return createJsonErrorResponse<GeocoderResult>(
1229 pResponse,
1230 d);
1231 }
1232 if (!d.IsObject()) {
1233 return createJsonTypeResponse<GeocoderResult>(

Callers 1

TestConnection.cppFile · 0.80

Calls 7

ensureValidTokenMethod · 0.95
parseJsonObjectFunction · 0.85
geocoderResultFromJsonFunction · 0.85
thenImmediatelyMethod · 0.45
getMethod · 0.45
responseMethod · 0.45
statusCodeMethod · 0.45

Tested by

no test coverage detected