Usando o próprio mapa base com a API do ArcGIS para Javascript?

12

Estou tentando fazer um mapa usando a API Javascript.

Quero usar meu próprio mapa base, mas não consigo encontrar o código mais simples para fazer isso.

Eu sempre vejo algo assim:

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

Mas não quero usar os mapas base do ArcGIS online.

Qual é o código para criar um serviço de mapa que estou hospedando meu mapa base?

ianbroad
fonte
1
você criou blocos a partir do seu próprio mapa base?
Mapperz

Respostas:

12

A Referência da API para a classe Map diz o seguinte:

As opções a seguir são válidas: "ruas", "satélite", "híbrido", "topo", "cinza", "oceanos", "nacional-geográfico", "osm". A partir da versão 3.3

Em vez disso, basta definir uma nova camada de serviço de mapa em mosaico do ArcGIS e usá-la da seguinte maneira:

var baseMapLayer = new esri.layers.ArcGISTiledMapServiceLayer("your URL");
map.addLayer(baseMapLayer);
Devdatta Tengshe
fonte
1
O @StephenLead setBasemap aceita apenas o parâmetro string, portanto não funcionará!
digz6666
2
@ digz6666 oops, acho que você está certo. Eu vou apagar esse comentário
Stephen chumbo
2
@StephenLead Encontrei uma maneira. Vou postar como resposta. Oops requer 10 pontos de rep para responder a esta, droga :)
digz6666
@ digz6666: Você não precisa de 10 representantes para criar uma resposta. Veja gis.stackexchange.com/help/privileges
Devdatta Tengshe
5

No arcgis javascript SDK versão 3.x, você pode usar a classe esri / basemaps para declarar e registrar mapas de base personalizados e usar com seu mapa: https://developers.arcgis.com/javascript/3/jsapi/esri.basemaps-amd.html

Declarar e registrar o mapa base personalizado:

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

Use o mapa base personalizado no construtor de mapas:

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

Ou você pode aplicar seu mapa base personalizado ao mapa existente:

map.setBasemap("mybasemap");

Exemplo de código completo: https://codepen.io/digz6666/pen/wPwPbW

No arcgis javascript SDK versão 4.x, você pode usar esri / Basemap.

Declare a camada do mapa base e o mapa 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'
});

Aplique o mapa base ao objeto de mapa existente:

map.basemap = myBasemap;
digz6666
fonte
2

Você não precisa especificar um mapa base embutido. Adicione seu mapa base personalizado como uma camada assim.

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
fonte