public void paintProvince(Province province, int fillColor, boolean border) { if (province.getHoleBoundary() != null) { if (province.getIsland() != null) { for (Island island : province.getIsland()) { googleMap.addPolygon( new PolygonOptions() .addAll(island.getBoundary()) .addHole(province.getHoleBoundary()) .fillColor(fillColor) .strokeWidth(border ? 1 : 0) .strokeColor(Color.BLACK)); } } if (province.getBoundary() != null) { googleMap.addPolygon( new PolygonOptions() .addAll(province.getBoundary()) .addHole(province.getHoleBoundary()) .fillColor(fillColor) .strokeWidth(border ? 1 : 0) .strokeColor(Color.BLACK)); } } else { if (province.getIsland() != null) { for (Island island : province.getIsland()) { googleMap.addPolygon( new PolygonOptions() .addAll(island.getBoundary()) .fillColor(fillColor) .strokeWidth(border ? 1 : 0) .strokeColor(Color.BLACK)); } } if (province.getBoundary() != null) { googleMap.addPolygon( new PolygonOptions() .addAll(province.getBoundary()) .fillColor(fillColor) .strokeWidth(border ? 1 : 0) .strokeColor(Color.BLACK)); } } }
public boolean isPointOnProvince(LatLng point, Province province) { if (province.getIsland() != null) { for (Island island : province.getIsland()) { if (Utils.isPointInPolygon(point, island.getBoundary())) { return true; } } return false; } else { return Utils.isPointInPolygon(point, province.getBoundary()); } }