Клуб API Карт

Не могу создать свою карту используя новый слой

obsea
22 сентября 2009, 09:27

Вот карта которую нужно открывать через яндекс.карты http://gmapuploader.com/view/u9A19j1mLV никак не получается.. заметил что сервис начал раскидывать тайлы по /mt0. /mt1. /mt2. - может из-за этого? Как указать несколько источников тайлов?

Ну и вообще конечно хотелось бы хранить тайлы на своем сайте, и делать нарезку масштабов с разных картинок, есть такая программа?

11 комментариев
Подписаться на комментарии к посту
Нужно добавить следующий код:

var myData = new YMaps.TileDataSource(”http://mt0.gmapuploader.com/tiles/u9A19j1mLV/”, false, false);
myData.getTileUrl = function (tile, zoom) {
return this.getTileUrlTemplate() + “tile-” + zoom + “-” + (tile.y * Math.pow(2, zoom) + tile.x) + “.jpg”;
}
map.addCopyright(’Копирайт’);
map.setType(new YMaps.MapType([new YMaps.MapLayer(myData)], ‘Пример карты’, {minZoom:1, maxZoom:3}));

Здесь http://mt0.gmapuploader.com/tiles/u9A19j1mLV/ - адрес, где храняться тайлы.

Подробнее см.: http://webmap-blog.ru/?p=161
Программы по нарезке тайлов есть, например, посмотрите схожее обсуждение.

Спасибо за помощь! Нарезал тайлы скриптом для фотошопа, сложил на свой сайт и ничего опять не получается!((( Помогите плиз!

папка с тайлами http://www.obsea.narod.ru/obseatiles/

тайлы имеют имена вида zoomlevel_tileX_tileY.gif (например 4_14_23.gif)

всего 4 zoomlevels от 1 до 4

в итоге должна получится вот такая карта http://savepic.ru/853429.jpg (уменьш. копия)

Напишите пожалуйста код, а то у меня уже руки опускаются.. За помощь огромное человеческое спасибо!!

Вы нарезали тайлы с неверной нумерацией.
Подробнее о нумерации тайлов можно почитать здесь.

Вот пример кода на котором можно проверить работоспособность слоя.
var map = new YMaps.Map(document.getElementById("YMapsID"));
map.setCenter(new YMaps.GeoPoint(),1);
map.enableScrollZoom();
map.addControl(new YMaps.SmallZoom());

var myData = new YMaps.TileDataSource("http://www.obsea.narod.ru/obseatiles/", false, true);
myData.getTileUrl = function (tile, zoom) {
    return this.getTileUrlTemplate() + "/" + zoom + "_" + (tile.y * Math.pow(2, zoom) + "_" + tile.x) + ".gif";
}
map.setType(new YMaps.MapType([new YMaps.Layer(myData)], 'Карта', {minZoom:1, maxZoom:4}));

Метод getTileUrl должен быть такой (в примере выше нумерация для тайлов с gmapuploader):
myData.getTileUrl = function (tile, zoom) {
    return this.getTileUrlTemplate() + "/" + zoom + "_" + (tile.y + "_" + tile.x) + ".gif";
}

А что не правильно то? Я так понимаю что бывает два типаимен

1. zoomlevel_порядковый номер.gif

2. zoomlevel_tile.X_tile.Y.gif

Сервису gmapuploader.com  роден 1 тип, отсюда и строчка (tile.y * Math.pow(2, zoom) + "_" + tile.x) которая наверно и пересчитывает tile.X и tile.Y в порядковый номер чтоб использовать тайлы с именем 1 типа на Яндексе.

Вот карта http://vgae.ru/map/ обратите внимание на нумерацию тайлов 3_1_1.gif и т.д. - как у меня, и на строчку кода return this.getTileUrlTemplate() + zoom + "_" + tile.x + "_" + tile.y + ".gif"; так что для такойнумерации просто нужно использовать соответствующий код, наверно?)

Короче вот моя страница с картой http://obsea.narod.ru/blank_map.htm Для разборов неисправности взял рисунок поменьше (фото автомобиля). При открытии видно что элементы грузятся, но кроме серого фона ничего нет(

Помогите разобраться!

 

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

Если Вы нумеровали свои тайлы zoom_tileX_tileY и тайлы находятся в каталоге http://www.obsea.narod.ru/impreza/, то не должно быть 404ой ошибки по адресу http://www.obsea.narod.ru/impreza/1_1_0.gif.

Возможно, что к тайлам нужно обращаться по другому адресу.

Вы правы, правда 1_1_0.gif у меня вообще нет, но и точно существующий http://www.obsea.narod.ru/impreza/1_0_0.gif точно также выдает 404-ю
Зашел на Вашу тестовую карту. Проблема, как я понял, решена?

Вы можете избавиться от зацикливания, если создадите свою координатную систему.
Например,
http://hevil.narod.ru/ymaps/sacred_legends.html
Да, спасибо Саша! Вроде бы со всем потихоньку разобрался) Но всетки остановлюсь пока на варианте gmapupload с показом через яндекс, т.к. это проще, быстрее и удобнее, загрузка 2500 тайлов по фтп на народ оочень утомительна, а изменять их придеться довольно часто. Единственное что напрягает это надежность сервиса gmapupload - сколько будет храниться информация и сколько вообще просуществует сервис. Вот бы яндекс сделал официальный такой сервис, не ахти как много места то надо, яндекс.диска хватит) Хоть в чем то гугла обошел бы)
Мы учтем Ваши пожелания.