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
ArcGISMap
object using a spatial reference e.g.ArcGISMap(SpatialReference.create(54024))
. - Instantiate a
Basemap
object using anArcGISMapImageLayer
object. - Set the basemap to the map using
map.setBasemap(basemap)
. - Pass the map to a
MapView
object 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
/* 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();
}
}