mirror of
https://gitlab.com/oeffi/public-transport-enabler.git
synced 2025-07-07 04:38:46 +00:00
Navitia: Also suggest POI and administrative locations
The administrative areas are extremely useful when people search for a suburb, but no stops have the suburbs name. They are currently mapped to a POI location.
This commit is contained in:
parent
889a85b745
commit
2adf627e51
3 changed files with 47 additions and 2 deletions
|
@ -211,7 +211,7 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider
|
||||||
}
|
}
|
||||||
case POI:
|
case POI:
|
||||||
{
|
{
|
||||||
return LocationType.ANY;
|
return LocationType.POI;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("Unhandled place type: " + placeType);
|
throw new IllegalArgumentException("Unhandled place type: " + placeType);
|
||||||
|
@ -257,6 +257,21 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Location parseAdministrativeRegion(final JSONObject j) throws IOException
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
final JSONObject coord = j.getJSONObject("coord");
|
||||||
|
final Point point = parseCoord(coord);
|
||||||
|
final String name = j.getString("name");
|
||||||
|
return new Location(LocationType.POI, null, point, null, name);
|
||||||
|
}
|
||||||
|
catch (final JSONException jsonExc)
|
||||||
|
{
|
||||||
|
throw new ParserException(jsonExc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Location parseLocation(final JSONObject j) throws IOException
|
private Location parseLocation(final JSONObject j) throws IOException
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -287,6 +302,10 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider
|
||||||
location = j.getJSONObject("poi");
|
location = j.getJSONObject("poi");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case ADMINISTRATIVE_REGION:
|
||||||
|
{
|
||||||
|
return parseAdministrativeRegion(j.getJSONObject("administrative_region"));
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("Unhandled place type: " + type);
|
throw new IllegalArgumentException("Unhandled place type: " + type);
|
||||||
}
|
}
|
||||||
|
@ -1029,7 +1048,7 @@ public abstract class AbstractNavitiaProvider extends AbstractNetworkProvider
|
||||||
{
|
{
|
||||||
final String nameCstr = constraint.toString();
|
final String nameCstr = constraint.toString();
|
||||||
|
|
||||||
final String queryUri = uri() + "places?q=" + ParserUtils.urlEncode(nameCstr) + "&type[]=stop_area&type[]=address" + "&depth=1";
|
final String queryUri = uri() + "places?q=" + ParserUtils.urlEncode(nameCstr) + "&type[]=stop_area&type[]=address&type[]=poi&type[]=administrative_region" + "&depth=1";
|
||||||
final CharSequence page = httpClient.get(queryUri);
|
final CharSequence page = httpClient.get(queryUri);
|
||||||
|
|
||||||
try
|
try
|
||||||
|
|
|
@ -250,6 +250,26 @@ public abstract class AbstractNavitiaProviderLiveTest extends AbstractProviderLi
|
||||||
print(result);
|
print(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected final void queryTripFromAdminToPoi(final CharSequence from, final CharSequence to) throws IOException
|
||||||
|
{
|
||||||
|
final SuggestLocationsResult fromResult = suggestLocations(from);
|
||||||
|
assertTrue(fromResult.getLocations().size() > 0);
|
||||||
|
Location fromLocation = fromResult.getLocations().get(0);
|
||||||
|
assertEquals(fromLocation.type, LocationType.POI);
|
||||||
|
print(fromResult);
|
||||||
|
|
||||||
|
final SuggestLocationsResult toResult = suggestLocations(to);
|
||||||
|
assertTrue(toResult.getLocations().size() > 0);
|
||||||
|
Location toLocation = toResult.getLocations().get(0);
|
||||||
|
assertEquals(toLocation.type, LocationType.POI);
|
||||||
|
print(toResult);
|
||||||
|
|
||||||
|
final QueryTripsResult tripsResult = queryTrips(fromLocation, null, toLocation, new Date(), true,
|
||||||
|
Product.ALL, NetworkProvider.WalkSpeed.NORMAL, NetworkProvider.Accessibility.NEUTRAL);
|
||||||
|
assertEquals(QueryTripsResult.Status.OK, tripsResult.status);
|
||||||
|
print(tripsResult);
|
||||||
|
}
|
||||||
|
|
||||||
protected final void queryMoreTrips(final CharSequence from, final CharSequence to) throws IOException
|
protected final void queryMoreTrips(final CharSequence from, final CharSequence to) throws IOException
|
||||||
{
|
{
|
||||||
final SuggestLocationsResult fromResult = suggestLocations(from);
|
final SuggestLocationsResult fromResult = suggestLocations(from);
|
||||||
|
|
|
@ -154,6 +154,12 @@ public class ParisProviderLiveTest extends AbstractNavitiaProviderLiveTest
|
||||||
queryTrip("Luxembourg Paris", "Antony Antony");
|
queryTrip("Luxembourg Paris", "Antony Antony");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void queryTripFromAdministrativeRegionToPoi() throws Exception
|
||||||
|
{
|
||||||
|
queryTripFromAdminToPoi("Paris 10e Arrondissement", "Paris Tour Eiffel");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void queryTripNoSolution() throws Exception
|
public void queryTripNoSolution() throws Exception
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue