diff --git a/cyclestreets.app/src/main/assets/whatsnew.html b/cyclestreets.app/src/main/assets/whatsnew.html
index 2087f894c..cf599ce30 100644
--- a/cyclestreets.app/src/main/assets/whatsnew.html
+++ b/cyclestreets.app/src/main/assets/whatsnew.html
@@ -8,6 +8,7 @@
Release 3.12
There are no new features in this release. We are updated a number of our
dependencies, including our underlying maps display.
+POI issue fixed.
Release 3.11
Features
diff --git a/cyclestreets.app/src/main/play/release-notes/en-GB/beta.txt b/cyclestreets.app/src/main/play/release-notes/en-GB/beta.txt
index 1550ba64d..34c157c21 100644
--- a/cyclestreets.app/src/main/play/release-notes/en-GB/beta.txt
+++ b/cyclestreets.app/src/main/play/release-notes/en-GB/beta.txt
@@ -1,2 +1,3 @@
There are no new features in this release. We are updated a number of our
-dependencies, including our underlying maps display.
\ No newline at end of file
+dependencies, including our underlying maps display.
+POI issue fixed.
\ No newline at end of file
diff --git a/libraries/cyclestreets-core/src/main/java/net/cyclestreets/api/POI.java b/libraries/cyclestreets-core/src/main/java/net/cyclestreets/api/POI.java
index 606c5c2cb..6fb0d71b5 100644
--- a/libraries/cyclestreets-core/src/main/java/net/cyclestreets/api/POI.java
+++ b/libraries/cyclestreets-core/src/main/java/net/cyclestreets/api/POI.java
@@ -6,7 +6,7 @@
public class POI
{
- private final int id;
+ private final String id;
private final String name;
private final String notes;
private final String url;
@@ -16,7 +16,7 @@ public class POI
private POICategory category;
- public POI(final int id,
+ public POI(final String id,
final String name,
final String notes,
final String url,
@@ -35,7 +35,7 @@ public POI(final int id,
public void setCategory(final POICategory category) { this.category = category; }
- public int id() { return id; }
+ public String id() { return id; }
public String name() { return stringOrBlank(name); }
public String notes() { return stringOrBlank(notes); }
public String url() { return stringOrBlank(url); }
diff --git a/libraries/cyclestreets-core/src/main/java/net/cyclestreets/api/client/dto/PoiTypesDto.kt b/libraries/cyclestreets-core/src/main/java/net/cyclestreets/api/client/dto/PoiTypesDto.kt
index 74b254468..78e1373db 100644
--- a/libraries/cyclestreets-core/src/main/java/net/cyclestreets/api/client/dto/PoiTypesDto.kt
+++ b/libraries/cyclestreets-core/src/main/java/net/cyclestreets/api/client/dto/PoiTypesDto.kt
@@ -42,8 +42,8 @@ class PoiTypesDto {
}
-fun poiIcon(context: Context, id: String): Drawable {
- val key = "poi_${id}"
+fun poiIcon(context: Context, type: String): Drawable {
+ val key = "poi_${type}"
val res = context.resources
val resPackage = res.getResourcePackageName(defaultResId)
diff --git a/libraries/cyclestreets-core/src/main/java/net/cyclestreets/api/client/geojson/PoiFactory.java b/libraries/cyclestreets-core/src/main/java/net/cyclestreets/api/client/geojson/PoiFactory.java
index 4cb0bb1f8..c49ddac09 100644
--- a/libraries/cyclestreets-core/src/main/java/net/cyclestreets/api/client/geojson/PoiFactory.java
+++ b/libraries/cyclestreets-core/src/main/java/net/cyclestreets/api/client/geojson/PoiFactory.java
@@ -32,7 +32,7 @@ private static POI toPoi(Feature feature) {
if (TextUtils.isEmpty(website))
website = osmTags.get("url");
- return new POI(Integer.parseInt(feature.getProperty("id")),
+ return new POI(feature.getProperty("id"),
feature.getProperty("name"),
feature.getProperty("notes"),
website,
diff --git a/libraries/cyclestreets-core/src/test/java/net/cyclestreets/api/client/RetrofitApiClientTest.java b/libraries/cyclestreets-core/src/test/java/net/cyclestreets/api/client/RetrofitApiClientTest.java
index 440835de7..8e3cbfa65 100644
--- a/libraries/cyclestreets-core/src/test/java/net/cyclestreets/api/client/RetrofitApiClientTest.java
+++ b/libraries/cyclestreets-core/src/test/java/net/cyclestreets/api/client/RetrofitApiClientTest.java
@@ -193,7 +193,7 @@ private static void validatePois(List pois) {
// happy path
POI poi = pois.get(0);
- assertThat(poi.id()).isEqualTo(101399);
+ assertThat(poi.id()).isEqualTo("alpha_101399");
assertThat(poi.name()).isEqualTo("Chris's Bikes");
assertThat(poi.notes()).isEqualTo("The notes section");
assertThat(poi.phone()).isEqualTo("01234 567890");
@@ -203,7 +203,7 @@ private static void validatePois(List pois) {
// website provided within `osmTags.url`, but not in `website`
poi = pois.get(6);
- assertThat(poi.id()).isEqualTo(113267);
+ assertThat(poi.id()).isEqualTo("some-other-characters-113267");
assertThat(poi.name()).isEqualTo("Bicycle Ambulance");
assertThat(poi.notes()).isEqualTo("");
assertThat(poi.phone()).isEqualTo("");
diff --git a/libraries/cyclestreets-core/src/test/resources/__files/pois.json b/libraries/cyclestreets-core/src/test/resources/__files/pois.json
index 5adec0922..c4d7fb90b 100644
--- a/libraries/cyclestreets-core/src/test/resources/__files/pois.json
+++ b/libraries/cyclestreets-core/src/test/resources/__files/pois.json
@@ -4,7 +4,7 @@
{
"type": "Feature",
"properties": {
- "id": "101399",
+ "id": "alpha_101399",
"name": "Chris's Bikes",
"notes": "The notes section",
"osmTags": {
@@ -113,7 +113,7 @@
{
"type": "Feature",
"properties": {
- "id": "113267",
+ "id": "some-other-characters-113267",
"name": "Bicycle Ambulance",
"notes": "",
"osmTags": {
diff --git a/libraries/cyclestreets-view/src/main/java/net/cyclestreets/routing/Journey.kt b/libraries/cyclestreets-view/src/main/java/net/cyclestreets/routing/Journey.kt
index 7d57a879c..82ad08fb2 100644
--- a/libraries/cyclestreets-view/src/main/java/net/cyclestreets/routing/Journey.kt
+++ b/libraries/cyclestreets-view/src/main/java/net/cyclestreets/routing/Journey.kt
@@ -212,7 +212,7 @@ class Journey private constructor(wp: Waypoints? = null) {
// For circular route pois, the id isn't returned in the API, so will create an artificial one.
var id = 0
for (poi in jdo.pois) {
- val circularRoutePoi = POI(id,
+ val circularRoutePoi = POI(id.toString(),
poi.name,
"",
poi.website,
diff --git a/libraries/cyclestreets-view/src/main/java/net/cyclestreets/views/overlay/POIOverlay.kt b/libraries/cyclestreets-view/src/main/java/net/cyclestreets/views/overlay/POIOverlay.kt
index 8c66ca166..77b98340a 100644
--- a/libraries/cyclestreets-view/src/main/java/net/cyclestreets/views/overlay/POIOverlay.kt
+++ b/libraries/cyclestreets-view/src/main/java/net/cyclestreets/views/overlay/POIOverlay.kt
@@ -28,6 +28,7 @@ import org.osmdroid.events.ZoomEvent
import org.osmdroid.util.BoundingBox
import org.osmdroid.views.MapView
import org.osmdroid.views.overlay.OverlayItem
+import java.util.Objects
private val TAG = Logging.getTag(POIOverlay::class.java)
@@ -362,7 +363,7 @@ class POIOverlay(mapView: CycleMapView) : LiveItemOverlay(mapVi
}
- class POIOverlayItem(val poi: POI) : OverlayItem(poi.id().toString(), poi.name(),
+ class POIOverlayItem(val poi: POI) : OverlayItem(poi.id(), poi.name(),
poi.notes(), poi.position()) {
init {
@@ -381,7 +382,7 @@ class POIOverlay(mapView: CycleMapView) : LiveItemOverlay(mapVi
}
override fun hashCode(): Int {
- return poi.id()
+ return Objects.hashCode(poi.id())
}
override fun toString(): String {