Java tutorial
/* Copyright 2017 Esri * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package com.esri.arcgisruntime.sample.symbolizeshapefile; import android.Manifest; import android.content.pm.PackageManager; import android.graphics.Color; import android.os.Bundle; import android.os.Environment; import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.widget.Toast; import com.esri.arcgisruntime.data.ShapefileFeatureTable; import com.esri.arcgisruntime.geometry.Point; import com.esri.arcgisruntime.geometry.SpatialReference; import com.esri.arcgisruntime.layers.FeatureLayer; import com.esri.arcgisruntime.mapping.ArcGISMap; import com.esri.arcgisruntime.mapping.Basemap; import com.esri.arcgisruntime.mapping.Viewpoint; import com.esri.arcgisruntime.mapping.view.MapView; import com.esri.arcgisruntime.symbology.SimpleFillSymbol; import com.esri.arcgisruntime.symbology.SimpleLineSymbol; import com.esri.arcgisruntime.symbology.SimpleRenderer; public class MainActivity extends AppCompatActivity { private MapView mMapView; private ArcGISMap mMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // inflate MapView from layout mMapView = findViewById(R.id.mapView); // create a map with the BasemapType topographic mMap = new ArcGISMap(Basemap.createTopographic()); // set the map to be displayed in this view mMapView.setMap(mMap); // set an initial viewpoint Point point = new Point(-11662054, 4818336, SpatialReference.create(3857)); Viewpoint viewpoint = new Viewpoint(point, 200000); mMap.setInitialViewpoint(viewpoint); requestWritePermission(); } private void symbolizeShapefile() { // create a shapefile feature table from the local data ShapefileFeatureTable shapefileFeatureTable = new ShapefileFeatureTable( Environment.getExternalStorageDirectory() + getString(R.string.shapefile_folder) + getString(R.string.subdivisions_shp)); // use the shapefile feature table to create a feature layer FeatureLayer featureLayer = new FeatureLayer(shapefileFeatureTable); // create the Symbol SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.RED, 1.0f); SimpleFillSymbol fillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.YELLOW, lineSymbol); // create the Renderer SimpleRenderer renderer = new SimpleRenderer(fillSymbol); // set the Renderer on the Layer featureLayer.setRenderer(renderer); // add the feature layer to the map mMap.getOperationalLayers().add(featureLayer); } /** * Request read permission on the device. */ private void requestWritePermission() { // define permission to request String[] reqPermission = new String[] { Manifest.permission.READ_EXTERNAL_STORAGE }; int requestCode = 2; // For API level 23+ request permission at runtime if (ContextCompat.checkSelfPermission(MainActivity.this, reqPermission[0]) == PackageManager.PERMISSION_GRANTED) { symbolizeShapefile(); } else { // request permission ActivityCompat.requestPermissions(MainActivity.this, reqPermission, requestCode); } } /** * Handle the permissions request response. */ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { symbolizeShapefile(); } else { // report to user that permission was denied Toast.makeText(MainActivity.this, getResources().getString(R.string.shapefile_read_permission_denied), Toast.LENGTH_SHORT).show(); } } @Override protected void onPause() { super.onPause(); mMapView.pause(); } @Override protected void onResume() { super.onResume(); mMapView.resume(); } @Override protected void onDestroy() { super.onDestroy(); mMapView.dispose(); } }