Vous utilisez votre propre fond de carte avec l'API ArcGIS pour Javascript?

12

J'essaie de faire une carte en utilisant l'API Javascript.

Je veux utiliser mon propre fond de carte, mais je ne trouve pas le code le plus simple pour ce faire.

Je vois toujours quelque chose comme ça:

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

Mais je ne veux pas utiliser les fonds de carte en ligne ArcGIS.

Quel est le code pour créer un service de carte J'héberge mon fond de carte?

ianbroad
la source
1
avez-vous créé des tuiles à partir de votre propre fond de carte?
Mapperz

Réponses:

12

La référence API pour la classe de carte dit ce qui suit:

Les options suivantes sont valides: "rues", "satellite", "hybride", "topo", "gris", "océans", "national-géographique", "osm". À partir de la version 3.3

À la place, vous devez simplement définir une nouvelle couche de service de carte en mosaïque ArcGIS et l'utiliser comme suit:

var baseMapLayer = new esri.layers.ArcGISTiledMapServiceLayer("your URL");
map.addLayer(baseMapLayer);
Devdatta Tengshe
la source
1
@StephenLead setBasemap accepte uniquement les paramètres de chaîne, donc cela ne fonctionnera pas!
digz6666
2
@ digz6666 oups, je pense que vous avez raison. Je vais supprimer ce commentaire
Stephen Lead
2
@StephenLead J'ai trouvé un moyen. Je posterai comme réponse. Oups, il faut 10 points de répétition pour répondre à cette question, putain :)
digz6666
@ digz6666: Vous ne devriez pas avoir besoin de 10 représentants pour créer une réponse. Voir gis.stackexchange.com/help/privileges
Devdatta Tengshe
5

Pour arcgis javascript SDK version 3.x, vous pouvez utiliser la classe esri / basemaps pour déclarer et enregistrer des fonds de carte personnalisés et les utiliser avec votre carte: https://developers.arcgis.com/javascript/3/jsapi/esri.basemaps-amd.html

Déclarez et enregistrez un fond de carte personnalisé:

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

Utilisez un fond de carte personnalisé dans le constructeur de carte:

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

Ou vous pouvez appliquer votre fond de carte personnalisé à la carte existante:

map.setBasemap("mybasemap");

Exemple de code complet: https://codepen.io/digz6666/pen/wPwPbW

Pour arcgis javascript SDK version 4.x, vous pouvez utiliser esri / Basemap.

Déclarez la couche de fond de carte et le fond de carte:

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

Appliquer un fond de carte à un objet de carte existant:

map.basemap = myBasemap;
digz6666
la source
2

Vous n'avez pas besoin de spécifier un fond de carte intégré. Ajoutez votre fond de carte personnalisé en tant que couche comme ça.

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
la source