Клуб API Карт

Проблема с кодом, полученным в API Яндекс.Карт. Подготовка слоя тайлов

victoruni
20 июля 2011, 17:58

Создаю пользовательскую карту API Яндекс.Карт. Подготовка слоя тайлов

без привязки к координатам без подложки

добавляю при загрузке метки из БД

все нормально

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

map.removeAllOverlays(

ничего пе происходит

видимо неправильное обращение к карте - не совсем понимаю - ????

Вот весь код ()

var map;
        function ini() {
            var options = {
                    tileUrlTemplate: "./%z/tile-%x-%y.png",
                    controls: {
                        typeControl: false,
                        miniMap: false,
                        toolBar: false,
                        scaleLine: false
                    },
                    scrollZoomEnabled: false,
                    mapCenter: new YMaps.GeoPoint(-179.993294477463, 85.0836981782876),
                    backgroundMapType: YMaps.MapType.NONE,
                    mapZoom: 18,
                    minZoom:14,
                    maxZoom:18,
                    isTransparent: true,
                    smoothZooming: false,
                    layerKey: "my#layer",
                    mapType: {
                        name: "layer1",
                        textColor: "#000000"
                    },
                },
                //map = new YMaps.Map(document.getElementById("YMapsID")
                map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]
                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, minZoom:15, maxZoom:18}

            YMaps.Layers.get("my#layer");

            map.setCenter(options.mapCenter, options.mapZoom, myMapType);
            map.setType(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()

// подгрузка меток из базы

............................................

//

}

<body  onload='ini();'>

5 комментариев
Подписаться на комментарии к посту

код сформирован API Яндекс.Карт. Подготовка слоя тайлов +

добавляются метки из бд

map.removeAllOverlays();
если выполнить в консоли файрбага\хрома, что-то пишет?

Интересно было бы увидеть именно код добавления/удаления меток.

выводятся метки php -кодом(формируется jscript-код), но результат можно посмотреть

http://lermsk.ru/yandex_kart/map21.php

(просмотр исходного кода)

Вы зачем-то два раза объявляете map.

 

Причем глобальная мап нигде не инициируется.

И вот тут:

this.map = map;

вы уничтожаете указатель карту, вернее, делаете его пустым.

Выход: объявлять мап глобально и там же инициировать.