Utilizzando la propria mappa di base con ArcGIS API per Javascript?


12

Sto cercando di creare una mappa utilizzando l'API Javascript.

Voglio usare la mia mappa di base, ma non riesco a trovare il codice più semplice per farlo.

Vedo sempre qualcosa del genere:

  function init() {
    map = new esri.Map("mapDiv", {
      basemap: "satellite",
      center: [-97.395, 37.537],
      zoom: 11
    });

Ma non voglio usare le mappe di base online di ArcGIS.

Qual è il codice per rendere un servizio di mappe che sto ospitando la mia mappa di base?


1
hai creato tessere dalla tua mappa di base?
Mapperz

Risposte:


12

Il riferimento API per la classe Map dice quanto segue:

Sono valide le seguenti opzioni: "strade", "satellite", "ibrido", "topo", "grigio", "oceani", "nazionale-geografico", "osm". A partire dalla versione 3.3

Dovresti invece definire un nuovo livello di servizio di mappe affiancate ArcGIS e utilizzarlo come segue:

var baseMapLayer = new esri.layers.ArcGISTiledMapServiceLayer("your URL");
map.addLayer(baseMapLayer);

1
@StephenLead setBasemap accetta solo parametri stringa, quindi non funzionerà!
digz6666,

2
@ digz6666 oops, penso che tu abbia ragione. Eliminerò quel commento
Stephen Lead,

2
@StephenLead Ho trovato un modo. Pubblicherò come risposta. Oops richiede 10 punti rep per rispondere a questo, accidenti :)
digz6666,

@ digz6666: non è necessario disporre di 10 rappresentanti per creare una risposta. Vedi gis.stackexchange.com/help/privileges
Devdatta Tengshe

5

Per arcgis javascript SDK versione 3.x è possibile utilizzare la classe esri / basemaps per dichiarare e registrare mappe di base personalizzate e utilizzare con la mappa: https://developers.arcgis.com/javascript/3/jsapi/esri.basemaps-amd.html

Dichiara e registra una mappa di base personalizzata:

Basemaps.mybasemap = {
  title: 'My custom basemap',
  thumbnailUrl: 'https://js.arcgis.com/3.22/esri/images/basemap/satellite.jpg',
  //itemId: 'ulas',
  baseMapLayers: [
    { url: "https://services.arcgisonline.com/ArcGIS/rest/services/Specialty/DeLorme_World_Base_Map/MapServer" }
  ]
};

Utilizza una mappa di base personalizzata nel costruttore della mappa:

var map = new Map("mapDiv", {
  basemap: "mybasemap",
  center: [-122.69, 45.52],
  zoom: 3
});

Oppure puoi applicare la tua mappa di base personalizzata alla mappa esistente:

map.setBasemap("mybasemap");

Esempio di codice completo: https://codepen.io/digz6666/pen/wPwPbW

Per arcgis javascript SDK versione 4.x è possibile utilizzare esri / Basemap.

Dichiarare il livello della mappa di base e la mappa di base:

var baseLayer = new MapImageLayer({
  url: "https://services.arcgisonline.com/ArcGIS/rest/services/Specialty/DeLorme_World_Base_Map/MapServer"
});
var myBasemap = this.esri.basemap({
  baseLayers: [baseLayer],
  title: 'My custom basemap',
  id: 'my_custom_basemap'
});

Applica la mappa di base all'oggetto mappa esistente:

map.basemap = myBasemap;

2

Non è necessario specificare una mappa di base integrata. Aggiungi la tua mappa di base personalizzata come livello in questo modo.

var map;
require(["esri/map", "esri/layers/ArcGISTiledMapServiceLayer", "dojo/domReady!"],
function (Map, ArcGISTiledMapServiceLayer ) {
    map = new Map("map", {                
        center: [-76.756, 40.241],
        zoom: 8
    });            
    var customBasemap = new ArcGISTiledMapServiceLayer(
    "http://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer");
    map.addLayer(customBasemap);
});
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.