Клуб API Карт

Создание меток в карте со своим слоем!

arinokaz
7 мая 2010, 14:44

Здрасте! У меня возникла такая проблема: я создаю и приклепляю слой к координатом спомощью программы API Яндекс.Карт. Подготовка слоя тайлов ( которая выложена тут http://api.yandex.ru/maps/jsapi/doc/dg/concepts/ymapstiler.xml ) и теперь код сайта отличаеться от обычного т.е. он стал таким :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
    <title>Пример</title>
    <script src="http://api-maps.yandex.ru/1.1/index.xml?key=..." type="text/javascript"></script>
    <script type="text/javascript">
        window.onload = function () {
            var options = {
                    tileUrlTemplate: "./%z/tile-%x-%y.png",
                    controls: {
                        typeControl: true,
                        miniMap: true,
                        toolBar: false,
                        scaleLine: true
                    },
                    scrollZoomEnabled: true,
                    mapCenter: new YMaps.GeoPoint(32.100975970125, 46.3998619845388),
                    backgroundMapType: YMaps.MapType.SATELLITE,
                    mapZoom: 13,
                    isTransparent: true,
                    smoothZooming: false,
                    layerKey: "my#layer",
                    mapType: {
                        name: "Пример",
                        textColor: "#000000"
                    },
                    copyright: ""
                },
                map = new YMaps.Map(document.getElementById("YMapsID")),
                myData = new YMaps.TileDataSource(options.tileUrlTemplate, options.isTransparent, options.smoothZooming);

            myData.getTileUrl = function (tile, zoom) {
                return this.getTileUrlTemplate().replace(/%x/i, tile.x).replace(/%y/i, tile.y).replace(/%z/i, zoom);
            }

            var MyLayer = function () {
                return new YMaps.Layer(myData);
            }
            YMaps.Layers.add(options.layerKey, MyLayer);

            var mapLayers = options.backgroundMapType ? options.backgroundMapType.getLayers() : [],
                myMapType = new YMaps.MapType(YMaps.jQuery.merge(mapLayers, [ options.layerKey ]), options.mapType.name, { textColor: options.mapType.textColor });

            map.setCenter(options.mapCenter, options.mapZoom, myMapType);
            if (options.copyright) {
                map.addCopyright(options.copyright);
            }

            if (options.controls.typeControl) {
                map.addControl(new YMaps.TypeControl([ myMapType, YMaps.MapType.MAP, YMaps.MapType.SATELLITE, YMaps.MapType.HYBRID ], [1, 2, 3]));
            }
         
            if (options.controls.miniMap) {
                map.addControl(new YMaps.MiniMap());
            }
            if (options.controls.toolBar) {
                map.addControl(new YMaps.ToolBar());
            }
            if (options.controls.scaleLine) {
                map.addControl(new YMaps.ScaleLine());
            }
            if (options.scrollZoomEnabled) {
                map.enableScrollZoom();
            }
            map.addControl(new YMaps.Zoom());
        }
    </script>
</head>
<body>
    <div id="YMapsID" style="width:550px;height:400px"></div>
</body>
</html>
 

Вместо такого :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Примеры. Знакомство с JavaScript API. Простой вызов карты.</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="http://api-maps.yandex.ru/1.1/index.xml?key=..."
    type="text/javascript"></script>
    <script type="text/javascript">
        window.onload = function () {
            var map = new YMaps.Map(document.getElementById("YMapsID"));
            map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10);
        }
    </script>
</head>
<body>
    <div id="YMapsID" style="width:600px;height:400px"></div>
</body>
</html>
 

Во втором случае я разобрался как ставить метки и как их подгружать с xml файла, но вот как ставить их в первом случае не как не могу разобраться между какими строчками надо вставить вот это :

var ml = new YMaps.YMapsML("..."); или это :

var placemark = new YMaps.Placemark(new YMaps.GeoPoint(37.609218,55.753559));
placemark.name = "...";
placemark.description = "...";
map.addOverlay(placemark);

и ставить метки не только на моем слое, но и на просто схеме или спутнике, точнее даже лудше ставить эти метки на схеме или спутнике. 

Заранее благодарю за помощь!!! Так же вот сайт на котором есть пример моей карты с слоем : http://arinokaz.cc.ua/

1 комментарий
Подписаться на комментарии к посту
После создании карты, когда переменная map содержит указатель на карту.


Т.е. после этой строчки можно добавлять оверлеи на карту:
myData = new YMaps.TileDataSource(options.tileUrlTemplate, options.isTransparent, options.smoothZooming);