Что делать с экспортом Mbutil для TileMill и Mapbox

#openlayers

#openlayers

Вопрос:

Всем привет. Я просто пытаюсь выяснить, как использовать мой mbtile directory export. Мои файлы расположены в локальном каталоге «/mytiles». Как я могу настроить это для использования моего пользовательского слоя?

   <head>
    <script src="http://www.openlayers.org/dev/OpenLayers.js"></script>
    <script type="text/javascript">

      var map;
      OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
      OpenLayers.ImgPath = "http://js.mapbox.com/theme/dark/";
      function init(){

        // Customize the values below to change the tileset.
        // This information is available on each tileset page.
        var layername = 'world-light';
        var file_extension = 'png';

        // Build the map
        var options = {
          projection: new OpenLayers.Projection("EPSG:900913"),
          displayProjection: new OpenLayers.Projection("EPSG:4326"),
          units: "m",
          numZoomLevels: 12,
          maxResolution: 156543.0339,
          maxExtent: new OpenLayers.Bounds(
            -20037500,
            -20037500,
            20037500,
            20037500
          )
        };
        map = new OpenLayers.Map('map', options);

        // Layer definitions
        var layer = new OpenLayers.Layer.TMS(
          "MapBox Layer",
          [ "http://a.tile.mapbox.com/","http://b.tile.mapbox.com/",
            "http://c.tile.mapbox.com/","http://d.tile.mapbox.com/" ],
          { 'layername': layername, 'type': file_extension }
        );

        // Add layers to the map
        map.addLayers([ layer ]);

        // Set the map's initial center point
        map.setCenter(new OpenLayers.LonLat(0, 0), 1);
      }

    </script>
  </head>
  <body onload="init()">
    <div id="map" style="width: 500px; height: 300px"></div>
  </body>
  

Ответ №1:

Сначала посмотрите часть кода, которая включает http://a.tile.mapbox.com/ . Замените это на имя хоста или локальное имя вашего компьютера — это может быть http://localhost/ или http://mycomputer.com/ и т.д. Затем замените layername именем вашего слоя.

Поскольку здесь используется уровень TMS, вам нужно будет создать каталог с именем 1.0.0 , который будет находиться между этими двумя элементами — вам нужно будет переместить туда свои плитки, если они находятся в каталоге с именем mydirectory . Результат был бы таким http://localhost/1.0.0/mydirectory .

Итак, если URL-адрес плитки http://localhost/1.0.0/mydirectory/0/0/0.png , у вас будет

 var layer = new OpenLayers.Layer.TMS(
  "MapBox Layer",
  [ "http://localhost/" ],
  { 'layername': 'mydirectory', 'type': 'png' }
);
  

Вы можете проконсультироваться OpenLayers.org TMS для полной документации типа слоя.

Комментарии:

1. У меня возникли проблемы с выполнением этой работы предложенным вами методом. У меня создалось впечатление, что «layername» и «file_extension» были переменными, взятыми ранее из кода. Вы заменили переменную «layername» именем каталога. Я бы хотел, чтобы это работало с данными, обслуживаемыми моим собственным хостом tilestream. Чего мне не хватает?