Я решил использовать тайловый интерфейс для управления оверлеями. Их много. Разом подгружать их не хочу - хочу потайлово. На метод load оверлеи удаляются и создаются, на метод onRemoveFromMap удаляются. Проблема: при смене масштаба не вызывается ни один из этих методов. Как с этим быть?
Чтобы быть более конкретным приложу код объекта:
function OverlayTile (dataSource) {
var myPos = new YMaps.Point(),
element = YMaps.jQuery(""),
objects = {}
element.addClass("overlay_tile")
this.onAddToMap = function (map, parentContainer) { element.appendTo(parentContainer) }
this.setPosition = function (position) { myPos.moveTo(position) }
this.getPosition = function () { return myPos.copy() }
this.error = function () {}
this.abort = function () {}
this.scale = function (coeff) {}
function delete_overlay(attr){
if(attr!=undefined){
objects[attr].removeAll()
map.removeOverlay(objects[attr])
objects[attr] = undefined
}
}
function create_overlay(attr){
if(objects[attr]==undefined){
objects[attr] = new YMaps.GeoObjectCollection();
map.addOverlay(objects[attr])
}
}
this.onRemoveFromMap = function () {
delete_overlay(element.attr('rel'))
element.remove()
}
this.load = function (tile, zoom) {
$.getJSON('/companies/by_tile/?tile=' + tile + ',' + zoom, function(data){
delete_overlay(element.attr('rel'))
element.attr('rel',tile)
create_overlay(element.attr('rel'))
$.each(data,function(i,el){
objects[element.attr('rel')].add( new YMaps.Placemark( new YMaps.Point(el.x,el.y) ) )
})
})
}
}
Заодно спрошу, как можно из объекта тайлов получить доступ объекту карты?