Клуб API Карт

Как можно соеденить 2 проекции?

Пост в архиве.
ktotud
25 апреля 2012, 11:13

К примеру что бы часть карты отображалась своя в ymaps.projection.sphericalMercator

А другая яндексовская.

 

Суть такая - хочу чтобы город выводился свой, в сферическом меркарторе, а пригород от народной карты.

 

И кстати так и не смог добиться что бы заработала опция notFoundTile - ничего не выводит.

5 комментариев

Соединить красиво две проекции не получится. На стыках тайлов будет заметно смещение.

А куда вы задаете эту опцию?

IgisLayer = function () {
    return new ymaps.Layer(
     function (tile, zoom) {
      v=0;
      if ((zoom==12)&&(tile[0]>2649)&&(tile[0][1]>1254)&&(tile[1]) {v=1;}
      if ((zoom==13)&&(tile[0]>5299)&&(tile[0][1]>2509)&&(tile[1]) {v=1;}
      if ((zoom==14)&&(tile[0]>10599)&&(tile[0]le[1]>5019)&&(tile[1]4)) {v=1;}
      if ((zoom==15)&&(tile[0]>21199)&&(tile[0]le[1]>10039)&&(tile[1]088)) {v=1;}
      if ((zoom==16)&&(tile[0]>42399)&&(tile[0]le[1]>20079)&&(tile[1]176)) {v=1;}
      if ((zoom==17)&&(tile[0]>84799)&&(tile[0]le[1]>40159)&&(tile[1]352)) {v=1;}
      if (v==1) {
       return 'http://rastr.igis.ru/izh/igis/'+zoom+'/'+tile[0]+'-'+tile[1]+'.png';
      } else {
       return 'http://a.tile.openstreetmap.org/'+zoom+'/'+tile[0]+'/'+tile[1]+'.png';
      }
     }, {
      projection: ymaps.projection.sphericalMercator
     }
    )
   };

А где же notFoundTile?

IgisLayer = function () {
    return new ymaps.Layer(
     function (tile, zoom) {
      v=0;
      if ((zoom==12)&&(tile[0]>2649)&&(tile[0][1]>1254)&&(tile[1]) {v=1;}
      if ((zoom==13)&&(tile[0]>5299)&&(tile[0][1]>2509)&&(tile[1]) {v=1;}
      if ((zoom==14)&&(tile[0]>10599)&&(tile[0]le[1]>5019)&&(tile[1]4)) {v=1;}
      if ((zoom==15)&&(tile[0]>21199)&&(tile[0]le[1]>10039)&&(tile[1]088)) {v=1;}
      if ((zoom==16)&&(tile[0]>42399)&&(tile[0]le[1]>20079)&&(tile[1]176)) {v=1;}
      if ((zoom==17)&&(tile[0]>84799)&&(tile[0]le[1]>40159)&&(tile[1]352)) {v=1;}
      if (v==1) {
       return 'http://rastr.igis.ru/izh/igis/'+zoom+'/'+tile[0]+'-'+tile[1]+'.png';
      } else {
       return 'http://a.tile.openstreetmap.org/'+zoom+'/'+tile[0]+'/'+tile[1]+'.png';
      }
     }, {
       notFoundTile: 'http://rastr.igis.ru/izh/igis/12/2655-1256.png',
       projection: ymaps.projection.sphericalMercator
     }
    )
   };
Вот так к примеру

В данный момент опция notFoundTile работает только в том случае, если функция, возвращающая url тайла вернет null.

Если же был отправлен осмысленный запрос за тайлом, а картинка не загрузилась, покажутся наши серые тайлы с сообщением.

К следующему релизу поправим, чтобы пользовательская картинка применялась в обоих случаях.