[android] Polygon holes (#8557)
* add 1 hole support to polygon-related classes * fix no hole crash and add triangle hole shape example * add support for multiple holes
This commit is contained in:
@@ -6,6 +6,7 @@ import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
import com.mapbox.mapboxsdk.annotations.Hole;
|
||||
import com.mapbox.mapboxsdk.annotations.Polygon;
|
||||
import com.mapbox.mapboxsdk.annotations.PolygonOptions;
|
||||
import com.mapbox.mapboxsdk.camera.CameraPosition;
|
||||
@@ -18,6 +19,7 @@ import com.mapbox.mapboxsdk.maps.OnMapReadyCallback;
|
||||
import com.mapbox.mapboxsdk.testapp.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static com.mapbox.mapboxsdk.testapp.activity.annotation.PolygonActivity.Config.BLUE_COLOR;
|
||||
@@ -26,6 +28,7 @@ import static com.mapbox.mapboxsdk.testapp.activity.annotation.PolygonActivity.C
|
||||
import static com.mapbox.mapboxsdk.testapp.activity.annotation.PolygonActivity.Config.NO_ALPHA;
|
||||
import static com.mapbox.mapboxsdk.testapp.activity.annotation.PolygonActivity.Config.PARTIAL_ALPHA;
|
||||
import static com.mapbox.mapboxsdk.testapp.activity.annotation.PolygonActivity.Config.RED_COLOR;
|
||||
import static com.mapbox.mapboxsdk.testapp.activity.annotation.PolygonActivity.Config.STAR_SHAPE_HOLES;
|
||||
import static com.mapbox.mapboxsdk.testapp.activity.annotation.PolygonActivity.Config.STAR_SHAPE_POINTS;
|
||||
|
||||
/**
|
||||
@@ -44,6 +47,7 @@ public class PolygonActivity extends AppCompatActivity implements OnMapReadyCall
|
||||
private boolean visible = true;
|
||||
private boolean color = true;
|
||||
private boolean allPoints;
|
||||
private boolean holes;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@@ -140,6 +144,10 @@ public class PolygonActivity extends AppCompatActivity implements OnMapReadyCall
|
||||
color = !color;
|
||||
polygon.setFillColor(color ? BLUE_COLOR : RED_COLOR);
|
||||
return true;
|
||||
case R.id.action_id_holes:
|
||||
holes = !holes;
|
||||
polygon.setHoles(holes ? STAR_SHAPE_HOLES : Collections.<Hole>emptyList());
|
||||
return true;
|
||||
default:
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
@@ -179,5 +187,27 @@ public class PolygonActivity extends AppCompatActivity implements OnMapReadyCall
|
||||
|
||||
static final List<LatLng> BROKEN_SHAPE_POINTS =
|
||||
STAR_SHAPE_POINTS.subList(0, STAR_SHAPE_POINTS.size() - 3);
|
||||
|
||||
static final List<? extends Hole> STAR_SHAPE_HOLES = new ArrayList<Hole>() {
|
||||
{
|
||||
add(new Hole(new ArrayList<LatLng>() {
|
||||
{
|
||||
add(new LatLng(45.521743, -122.669091));
|
||||
add(new LatLng(45.530483, -122.676833));
|
||||
add(new LatLng(45.520483, -122.676833));
|
||||
add(new LatLng(45.521743, -122.669091));
|
||||
}
|
||||
}));
|
||||
add(new Hole(new ArrayList<LatLng>() {
|
||||
{
|
||||
add(new LatLng(45.529743, -122.662791));
|
||||
add(new LatLng(45.525543, -122.662791));
|
||||
add(new LatLng(45.525543, -122.660));
|
||||
add(new LatLng(45.527743, -122.660));
|
||||
add(new LatLng(45.529743, -122.662791));
|
||||
}
|
||||
}));
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,4 +17,8 @@
|
||||
android:id="@+id/action_id_color"
|
||||
android:title="@string/action_color_polygon"
|
||||
mapbox:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/action_id_holes"
|
||||
android:title="@string/action_holes_polygon"
|
||||
mapbox:showAsAction="never" />
|
||||
</menu>
|
||||
|
||||
@@ -132,6 +132,7 @@
|
||||
<string name="action_alpha_polygon">Change alpha</string>
|
||||
<string name="action_points_polygon">Change points</string>
|
||||
<string name="action_color_polygon">Change color</string>
|
||||
<string name="action_holes_polygon">Change holes</string>
|
||||
<string name="action_width_polyline">Change width</string>
|
||||
|
||||
<!--Menu-->
|
||||
|
||||
Reference in New Issue
Block a user