Specify a map's spatial reference.
      
   
    
Use case
Choosing the correct spatial reference is important for ensuring accurate projection of data points to a map.
How to use the sample
Pan and zoom around the map. Observe how the map is displayed using the World Bonne spatial reference.
How it works
- Instantiate an ArcGISMapobject using a spatial reference e.g.ArcGISMap(SpatialReference.create(54024)).
- Instantiate a Basemapobject using anArcGISMapImageLayerobject.
- Set the basemap to the map using map.setBasemap(basemap).
- Pass the map to a MapViewobject usingMapView.setMap(map).
The ArcGIS map image layer will now use the spatial reference set to the ArcGIS map (World Bonne (WKID: 54024)) and not its default spatial reference.
Relevant API
- ArcGISMap
- ArcGISMapImageLayer
- BasemapStyle
- MapView
- SpatialReference
Additional information
Operational layers will automatically project to this spatial reference when possible.
Tags
project, WKID
Sample Code
MainActivity.java
/* Copyright 2016 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.mapspatialreference;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.esri.arcgisruntime.geometry.SpatialReference;
import com.esri.arcgisruntime.layers.ArcGISMapImageLayer;
import com.esri.arcgisruntime.mapping.ArcGISMap;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.view.MapView;
public class MainActivity extends AppCompatActivity {
  private MapView mMapView;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // get a reference to the map view
    mMapView = findViewById(R.id.mapView);
    // create a map with World_Bonne projection
    ArcGISMap map = new ArcGISMap(SpatialReference.create(54024));
    //Adding a map image layer which can re-project itself to the map's spatial reference
    ArcGISMapImageLayer mapImageLayer = new ArcGISMapImageLayer(getString(R.string.world_cities_service));
    // set the map image layer as basemap
    Basemap basemap = new Basemap(mapImageLayer);
    // add the basemap to the map
    map.setBasemap(basemap);
    // set the map to be displayed in this view
    mMapView.setMap(map);
  }
  @Override
  protected void onPause() {
    mMapView.pause();
    super.onPause();
  }
  @Override
  protected void onResume() {
    super.onResume();
    mMapView.resume();
  }
  @Override
  protected void onDestroy() {
    mMapView.dispose();
    super.onDestroy();
  }
}