From 9abd7ebac3d426acb1a275a4be43c89f33105e64 Mon Sep 17 00:00:00 2001 From: mar-v-in Date: Sat, 2 Jan 2016 15:38:33 +0100 Subject: [PATCH] Small Map fixes to support Severe Weather Fixes #66 --- .../src/main/java/org/microg/gms/maps/GmsMapsTypeHelper.java | 2 ++ .../src/main/java/org/microg/gms/maps/ProjectionImpl.java | 3 +++ .../src/main/java/org/microg/gms/maps/markup/PolygonImpl.java | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/play-services-core/src/main/java/org/microg/gms/maps/GmsMapsTypeHelper.java b/play-services-core/src/main/java/org/microg/gms/maps/GmsMapsTypeHelper.java index 02fba906..af23f604 100644 --- a/play-services-core/src/main/java/org/microg/gms/maps/GmsMapsTypeHelper.java +++ b/play-services-core/src/main/java/org/microg/gms/maps/GmsMapsTypeHelper.java @@ -44,6 +44,8 @@ public class GmsMapsTypeHelper { double maxLon = MercatorProjection.toLongitude(box.xmax); double minLat = MercatorProjection.toLatitude(box.ymax); double maxLat = MercatorProjection.toLatitude(box.ymin); + if (Double.isNaN(minLon) || Double.isNaN(maxLon) || Double.isNaN(minLat) || Double.isNaN(maxLat)) + minLon = maxLon = minLat = maxLat = 0; return new LatLngBounds(new LatLng(minLat, minLon), new LatLng(maxLat, maxLon)); } diff --git a/play-services-core/src/main/java/org/microg/gms/maps/ProjectionImpl.java b/play-services-core/src/main/java/org/microg/gms/maps/ProjectionImpl.java index e8c85163..a214a2d0 100644 --- a/play-services-core/src/main/java/org/microg/gms/maps/ProjectionImpl.java +++ b/play-services-core/src/main/java/org/microg/gms/maps/ProjectionImpl.java @@ -29,6 +29,7 @@ import org.oscim.map.Viewport; public class ProjectionImpl extends IProjectionDelegate.Stub { private Viewport viewport; + private float[] extents = new float[8]; public ProjectionImpl(Viewport viewport) { this.viewport = viewport; @@ -51,6 +52,8 @@ public class ProjectionImpl extends IProjectionDelegate.Stub { @Override public VisibleRegion getVisibleRegion() throws RemoteException { + viewport.getMapExtents(extents, 0); + // TODO: Support non-flat map extents return new VisibleRegion(GmsMapsTypeHelper.toLatLngBounds(viewport.getBBox(null, 0))); } } diff --git a/play-services-core/src/main/java/org/microg/gms/maps/markup/PolygonImpl.java b/play-services-core/src/main/java/org/microg/gms/maps/markup/PolygonImpl.java index c4aad326..cec8810f 100644 --- a/play-services-core/src/main/java/org/microg/gms/maps/markup/PolygonImpl.java +++ b/play-services-core/src/main/java/org/microg/gms/maps/markup/PolygonImpl.java @@ -152,6 +152,10 @@ public class PolygonImpl extends IPolygonDelegate.Stub implements DrawableMarkup for (LatLng point : options.getPoints()) { points.add(GmsMapsTypeHelper.fromLatLng(point)); } + if (points.size() < 3 || (points.size() == 3 && points.get(2).equals(points.get(0)))) { + // Need at least 3 distinguished points to draw a polygon + return null; + } // TODO: holes return new PolygonDrawable(points, Style.builder() .fillAlpha(1)