1 /* Copyright 2016 EsriEsri 2 * 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 * 15 */ 16 17 package com.esri.arcgisruntime.sample.creategeometries; 18 19 import android.graphics.Color; 20 import android.os.Bundle; 21 import android.support.v7.app.AppCompatActivity; 22 23 import com.esri.arcgisruntime.geometry.Envelope; 24 import com.esri.arcgisruntime.geometry.Multipoint; 25 import com.esri.arcgisruntime.geometry.Point; 26 import com.esri.arcgisruntime.geometry.PointCollection; 27 import com.esri.arcgisruntime.geometry.Polygon; 28 import com.esri.arcgisruntime.geometry.Polyline; 29 import com.esri.arcgisruntime.geometry.SpatialReferences; 30 import com.esri.arcgisruntime.mapping.ArcGISMap; 31 import com.esri.arcgisruntime.mapping.Basemap; 32 import com.esri.arcgisruntime.mapping.view.Graphic; 33 import com.esri.arcgisruntime.mapping.view.GraphicsOverlay; 34 import com.esri.arcgisruntime.mapping.view.MapView; 35 import com.esri.arcgisruntime.symbology.SimpleFillSymbol; 36 import com.esri.arcgisruntime.symbology.SimpleLineSymbol; 37 import com.esri.arcgisruntime.symbology.SimpleMarkerSymbol; 38 39 /** 40 * Shows straightforward ways to create Point, Envelope, Multipoint, Polyline, and Polygon geometries. Shows a MapView 41 * with a GraphicsOverlay containing Graphics created from the Point, Multipoint, Polyline, and Polygon geometries, and 42 * sets the Viewpoint of the Map from the Envelope geometry. 43 */ 44 public class MainActivity extends AppCompatActivity { 45 46 private Envelope createEnvelope() { 47 48 //[DocRef: Name=Create Envelope, Category=Fundamentals, Topic=Geometries] 49 // create an Envelope using minimum and maximum x,y coordinates and a SpatialReference 50 Envelope envelope = new Envelope(-123.0, 33.5, -101.0, 48.0, SpatialReferences.getWgs84()); 51 //[DocRef: END] 52 53 return envelope; 54 } 55 56 private Point createPoint() { 57 //[DocRef: Name=Create Point, Category=Fundamentals, Topic=Geometries] 58 // create a Point using x,y coordinates and a SpatialReference 59 Point pt = new Point(34.056295, -117.195800, SpatialReferences.getWgs84()); 60 //[DocRef: END] 61 62 return pt; 63 } 64 65 private Multipoint createMultipoint() { 66 //[DocRef: Name=Create Multipoint, Category=Fundamentals, Topic=Geometries] 67 // create a Multipoint from a PointCollection 68 PointCollection stateCapitalsPST = new PointCollection(SpatialReferences.getWgs84()); 69 stateCapitalsPST.add(-121.491014, 38.579065); // Sacramento, CA 70 stateCapitalsPST.add(-122.891366, 47.039231); // Olympia, WA 71 stateCapitalsPST.add(-123.043814, 44.93326); // Salem, OR 72 stateCapitalsPST.add(-119.766999, 39.164885); // Carson City, NV 73 Multipoint multipoint = new Multipoint(stateCapitalsPST); 74 //[DocRef: END] 75 76 return multipoint; 77 } 78 79 private Polyline createPolyline() { 80 //[DocRef: Name=Create Polyline, Category=Fundamentals, Topic=Geometries] 81 // create a Polyline from a PointCollection 82 PointCollection borderCAtoNV = new PointCollection(SpatialReferences.getWgs84()); 83 borderCAtoNV.add(-119.992, 41.989); 84 borderCAtoNV.add(-119.994, 38.994); 85 borderCAtoNV.add(-114.620, 35.0); 86 Polyline polyline = new Polyline(borderCAtoNV); 87 //[DocRef: END] 88 89 return polyline; 90 } 91 92 private Polygon createPolygon() { 93 //[DocRef: Name=Create Polygon, Category=Fundamentals, Topic=Geometries] 94 // create a Polygon from a PointCollection 95 PointCollection coloradoCorners = new PointCollection(SpatialReferences.getWgs84()); 96 coloradoCorners.add(-109.048, 40.998); 97 coloradoCorners.add(-102.047, 40.998); 98 coloradoCorners.add(-102.037, 36.989); 99 coloradoCorners.add(-109.048, 36.998); 100 Polygon polygon = new Polygon(coloradoCorners); 101 //[DocRef: END] 102 103 return polygon; 104 } 105 106 107 @Override 108 protected void onCreate(Bundle savedInstanceState) { 109 super.onCreate(savedInstanceState); 110 setContentView(R.layout.activity_main); 111 112 // get MapView from layout 113 MapView mMapView = (MapView) findViewById(R.id.mapView); 114 115 // create a map with the BasemapType topographic 116 final ArcGISMap mMap = new ArcGISMap(Basemap.createTopographic()); 117 118 // set the map to be displayed in this view 119 mMapView.setMap(mMap); 120 121 // create color and symbols for drawing graphics 122 SimpleMarkerSymbol markerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.TRIANGLE, Color.BLUE, 14); 123 SimpleFillSymbol fillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.CROSS, Color.BLUE, null); 124 SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.BLUE, 3); 125 126 // add a graphic of point, multipoint, polyline and polygon. 127 GraphicsOverlay overlay = new GraphicsOverlay(); 128 mMapView.getGraphicsOverlays().add(overlay); 129 overlay.getGraphics().add(new Graphic(createPolygon(), fillSymbol)); 130 overlay.getGraphics().add(new Graphic(createPolyline(), lineSymbol)); 131 overlay.getGraphics().add(new Graphic(createMultipoint(), markerSymbol)); 132 overlay.getGraphics().add(new Graphic(createPoint(), markerSymbol)); 133 134 // use the envelope to set the map viewpoint 135 mMapView.setViewpointGeometryAsync(createEnvelope(), getResources().getDimension(R.dimen.viewpoint_padding)); 136 137 } 138 139 }