Korzystasz z własnej mapy bazowej z ArcGIS API dla Javascript?

12

Próbuję zrobić mapę za pomocą JavaScript API.

Chcę użyć własnej mapy bazowej, ale nie mogę znaleźć najprostszego kodu, aby to zrobić.

Zawsze widzę coś takiego:

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

Ale nie chcę korzystać z bazowych map ArcGIS online.

Jaki jest kod do stworzenia usługi mapowej Hostuję moją mapę bazową?

ianbroad
źródło
1
czy stworzyłeś kafelki z własnej mapy bazowej?
Mapperz

Odpowiedzi:

12

Dokumentacja interfejsu API dla klasy mapy mówi:

Dostępne są następujące opcje: „ulice”, „satelita”, „hybryda”, „topo”, „szary”, „oceany”, „narodowy-geograficzny”, „osm”. Od wersji 3.3

Zamiast tego powinieneś po prostu zdefiniować nową Warstwę Usługi Kafelkowej Mapy ArcGIS i użyć jej w następujący sposób:

var baseMapLayer = new esri.layers.ArcGISTiledMapServiceLayer("your URL");
map.addLayer(baseMapLayer);
Devdatta Tengshe
źródło
1
@StephenLead setBasemap akceptuje tylko parametry ciągu, więc nie będzie działać!
digz6666,
2
@ digz6666 ups, myślę, że masz rację. Skasuję ten komentarz
Stephen Lead
2
@StephenLead Znalazłem sposób. Wyślę jako odpowiedź. Ups, to wymaga 10 punktów rep, aby odpowiedzieć na to pytanie, cholera :)
digz6666
@ digz6666: Nie musisz potrzebować 10 powtórzeń, aby utworzyć odpowiedź. Zobacz gis.stackexchange.com/help/privileges
Devdatta Tengshe
5

W Arcgis javascript SDK w wersji 3.x można użyć klasy esri / basemaps do deklarowania i rejestrowania niestandardowych map bazowych oraz korzystania z mapy: https://developers.arcgis.com/javascript/3/jsapi/esri.basemaps-amd.html

Zadeklaruj i zarejestruj niestandardową mapę bazową:

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

Użyj niestandardowej mapy bazowej w konstruktorze map:

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

Możesz też zastosować własną mapę bazową do istniejącej mapy:

map.setBasemap("mybasemap");

Przykład pełnego kodu: https://codepen.io/digz6666/pen/wPwPbW

W przypadku Arcgis javascript SDK w wersji 4.x można użyć esri / Basemap.

Deklaruj warstwę mapy bazowej i mapę bazową:

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

Zastosuj mapę bazową do istniejącego obiektu mapy:

map.basemap = myBasemap;
digz6666
źródło
2

Nie musisz określać wbudowanej mapy bazowej. Dodaj niestandardową mapę bazową jako taką warstwę.

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
źródło