Клуб API Карт

Добавление слоя не-Яндекс-карт

inikitian
19 октября 2009, 16:00

Делаю на сайте отображение информации на двух картах по выбору пользователя. К гуломапам прикрутил OpenStreetMap как ещё один слой так:

function OSMGetTileUrl(a,b)
{
var z = b;
var f = "http://tile.openstreetmap.org/"+z+"/"+a.x+"/"+a.y+".png";
return f;
}

/*OSM start*/
        var copyright = new GCopyright(1, new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)), 0, "");
        var copyrightCollection = new GCopyrightCollection("OSM");
        copyrightCollection.addCopyright(copyright);
        var tilelayers = new Array(
        tilelayers[0] = new GTileLayer(copyrightCollection, 1, 18,{opacity: 1}
        tilelayers[0].getTileUrl = OSMGetTileUrl;
        var custommap = new GMapType(tilelayers, new GMercatorProjection(19), "OSM", {errorMessage:"Isle of Wight only .. more coming"}
        map.addMapType(custommap);
        /*OSM end*/

А вот к Яндекс-картам никак не получается подобным же макаром добавить слой %) Это вообще возможно?

6 комментариев
Подписаться на комментарии к посту
Это возможно. Подробнее о слоях можно почитать в Руководстве разработчика.

Вот так можно создать новый тип карты:
var myData = new YMaps.TileDataSource("http://tile.openstreetmap.org/", false, true);
myData.getTileUrl = function (tile, zoom) {
    return this.getTileUrlTemplate() + zoom + "/" + tile.x + "/" + tile.y + ".png";
}
map.setType(new YMaps.MapType([new YMaps.Layer(myData)], "OpenStreetMap"));
Спасибо! То, что нужно! Правда вот широты действительно не сходятся :(
возможно сделать что-то такое , только не сходятся широты... 
а про расхождение обсуждалось тут 

Там обсуждали-обсуждали, но решения нет: OSM и Я.Карты расходятся по широте. Для Ростова-на-Дону http://smsrostov/map_TileDataSource.html в тайлах я вычислил это примерно как -13, но при изменении зума все снова нарушается

Сделал такой вариант: http://dev.nikitian.ru/map/

Вроде расхождений не замечаю