Eigene Grundkarte mit ArcGIS API für Javascript verwenden?

12

Ich versuche, eine Karte mit der Javascript-API zu erstellen.

Ich möchte meine eigene Grundkarte verwenden, kann aber nicht den einfachsten Code dafür finden.

Ich sehe immer so etwas:

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

Ich möchte die ArcGIS-Online-Grundkarten jedoch nicht verwenden.

Wie lautet der Code für einen Kartendienst, auf dem ich meine Grundkarte hoste?

ianbroad
quelle
1
Haben Sie Kacheln aus Ihrer eigenen Grundkarte erstellt?
Mapperz

Antworten:

12

Die API-Referenz für die Map-Klasse lautet wie folgt:

Die folgenden Optionen sind gültig: "Straßen", "Satellit", "Hybrid", "Topo", "Grau", "Ozeane", "National-Geographic", "Osm". Ab Version 3.3

Sie sollten stattdessen einfach einen neuen ArcGIS Tiled Map Service Layer definieren und ihn wie folgt verwenden:

var baseMapLayer = new esri.layers.ArcGISTiledMapServiceLayer("your URL");
map.addLayer(baseMapLayer);
Devdatta Tengshe
quelle
1
@StephenLead setBasemap akzeptiert nur Zeichenfolgenparameter, daher funktioniert es nicht!
digz6666
2
@ digz6666 oops, ich denke du hast recht. Ich werde diesen Kommentar löschen
Stephen Lead
2
@ StephenLead Ich habe einen Weg gefunden. Ich werde als Antwort posten. Ups, es erfordert 10 Wiederholungspunkte, um dies zu beantworten, verdammt :)
digz6666
@ digz6666: Sie sollten nicht 10 Wiederholungen benötigen, um eine Antwort zu erstellen. Siehe gis.stackexchange.com/help/privileges
Devdatta Tengshe
5

Für das Arcgis Javascript SDK Version 3.x können Sie die Klasse esri / basemaps verwenden, um benutzerdefinierte Grundkarten zu deklarieren und zu registrieren und mit Ihrer Karte zu verwenden: https://developers.arcgis.com/javascript/3/jsapi/esri.basemaps-amd.html

Benutzerdefinierte Grundkarte deklarieren und registrieren:

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" }
  ]
};

Verwenden Sie eine benutzerdefinierte Grundkarte im Kartenkonstruktor:

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

Oder Sie können Ihre benutzerdefinierte Grundkarte auf vorhandene Karten anwenden:

map.setBasemap("mybasemap");

Vollständiges Codebeispiel: https://codepen.io/digz6666/pen/wPwPbW

Für arcgis Javascript SDK Version 4.x können Sie esri / Basemap verwenden.

Basiskartenebene und Basiskarte deklarieren:

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'
});

Grundkarte auf vorhandenes Kartenobjekt anwenden:

map.basemap = myBasemap;
digz6666
quelle
2

Sie müssen keine integrierte Grundkarte angeben. Fügen Sie Ihre benutzerdefinierte Grundkarte als solche Ebene hinzu.

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);
});
James Lawruk
quelle