GeocodeQuery WithBounds not strictly used across providers that support it
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par examiner la gestion existante de viewbox et de bounded dans le provider Nominatim, puis suivez les providers Pelias à travers getGeocodeQueryUrl. Comparez la manière dont GeocodeQuery expose getBounds() avec les paramètres de request pris en charge par chaque provider. La tâche est terminée lorsque les providers qui prennent en charge les limites rectangulaires utilisent systématiquement les limites de la query sans nécessiter de données spécifiques au provider dupliquées.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
The WithBounds logic needs to be added to providers, as the method is a base method in the query.
E.g. in Nominatims provider we see:
$viewbox = $query->getData('viewbox');
if (!is_null($viewbox) && is_array($viewbox) && 4 === count($viewbox)) {
$url .= '&'.http_build_query([
'viewbox' => implode(',', $viewbox),
], '', '&', PHP_QUERY_RFC3986);
$bounded = $query->getData('bounded');
if (!is_null($bounded) && true === $bounded) {
$url .= '&'.http_build_query([
'bounded' => 1,
], '', '&', PHP_QUERY_RFC3986);
}
}
The above should instead or in-addition accept $query->getBounds(), because otherwise it forces us to write code like:
// Bounds of EU/UK where our customers are
$euBounds = new Bounds(34.857764, -30.428009, 75.400203, 41.642303);
$geocodeQuery = GeocodeQuery::create($query)
->withBounds($euBounds)
// For Nominatim
->withData('viewbox', $euBounds->toArray());
Pelias Providers and those that extend it don't support it at all -even though Pelias does:
https://github.com/pelias/documentation/blob/master/search.md#search-within-a-rectangular-region
/**
* @param array<string, mixed> $query_data additional query data (API key for instance)
*
* @throws \Geocoder\Exception\Exception
*/
protected function getGeocodeQueryUrl(GeocodeQuery $query, array $query_data = []): string
{
$address = $query->getText();
// This API doesn't handle IPs
if (filter_var($address, FILTER_VALIDATE_IP)) {
throw new UnsupportedOperation(sprintf('The %s provider does not support IP addresses, only street addresses.', $this->getName()));
}
$data = [
'text' => $address,
'size' => $query->getLimit(),
'layers' => null !== $query->getData('layers') ? implode(',', $query->getData('layers')) : null,
'boundary.country' => null !== $query->getData('boundary.country') ? implode(',', $query->getData('boundary.country')) : null,
];
return sprintf('%s/search?%s', $this->root, http_build_query(array_merge($data, $query_data)));
}
- Langage dominant
- PHP
- Étoiles
- 4k
- Forks
- 525
- Merge moyen
- 8 min
- PR mergées (30 j)
- 1
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de geocoder-php/Geocoder
-
Wrong LocationIQ Bounds Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 78/100
geocoder-php/Geocoder#1272 ·
-
question
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
geocoder-php/Geocoder#1267 · 2 commentaires ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 38/100
geocoder-php/Geocoder#1244 · 2 commentaires · 2 réactions ·
-
Add Support for IPQuery Ouverteprovider
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
geocoder-php/Geocoder#1243 ·
-
Mapbox Geocoding v6 Ouverteprovider
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
geocoder-php/Geocoder#1237 · 1 commentaire · 1 réaction ·
Toutes les issues de geocoder-php/Geocoder
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
getgrav/grav-plugin-api#45 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
RSS-Bridge/rss-bridge#5098 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
phingofficial/phing#2025 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
silverstripe/developer-docs#911 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100