Страница 1 из 1

OpenLayers - плавная прорисовка tile

Добавлено: 18 авг 2010, 11:42
Olax
Подскажите есть ли в опенлаер такая функция перерисовки тилов как в гугле при зуме?
т.е. при изменения зума тиле не пропадает а "растягивается" или "сжимается" и заменяется только тогда кода подгружен новый тиле.
Интересная фишка. Подскажите.

Re: OpenLayers - плавная прорисовка tile

Добавлено: 18 авг 2010, 14:05
Konstantin Tokar
Есть, была добавлена давольно давно, но не помню как включается.

вот как: http://dev.openlayers.org/releases/Open ... ition.html
выбирайте слои с включённым эффектом под плюсиком.

Re: OpenLayers - плавная прорисовка tile

Добавлено: 18 авг 2010, 18:02
kosyag
раз: http://dev.openlayers.org/docs/files/Op ... tionEffect (сохранение старого тайла до прорисовки нового - ссылка на документацию)
два: http://dev.openlayers.org/sandbox/emanu ... /demo.html (анимированный зум - демо)

Re: OpenLayers - плавная прорисовка tile

Добавлено: 18 авг 2010, 19:38
Olax
Спасибо, анимация больше понравилась. так сказать плавный ресизинг :-))

Re: OpenLayers - плавная прорисовка tile

Добавлено: 20 авг 2010, 17:16
dobeer
Вставил в описание слоя

Код: Выделить всё

 {transitionEffect: 'resize'}
вот так:

Код: Выделить всё

wms = new OpenLayers.Layer.WMS("Просто слой",
            "http://*******************************",{transparent: 'true', layers: 'area,zastroyka,asfalt3,veget,voda,linesW,lines,Street,asfalt,asfalt2,haus,poi,poibig', format: 'png', minZoomLevel:4, maxZoomLevel:17}, {layers: 'basic'}, {transitionEffect: 'resize'});

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

Код: Выделить всё

 {transitionEffect: 'resize'}
или еще что то нужно?

Re: OpenLayers - плавная прорисовка tile

Добавлено: 20 авг 2010, 21:34
Konstantin Tokar
Нужно прочитать документацию. У Вас лишний хэш в параметрах, {layers: 'basic'}, надо удалять.

OpenLayers. Layer.WMS

Create a new WMS layer object
Example

var wms = new OpenLayers.Layer.WMS("NASA Global Mosaic",
"http://wms.jpl.nasa.gov/wms.cgi",
{layers: "modis,global_mosaic"});

Parameters
name {String} A name for the layer
url {String} Base url for the WMS (e.g. http://wms.jpl.nasa.gov/wms.cgi)
params {Object} An object with key/value pairs representing the GetMap query string parameters and parameter values.
options {Ojbect} Hashtable of extra options to tag onto the layer

Re: OpenLayers - плавная прорисовка tile

Добавлено: 21 авг 2010, 07:31
dobeer
В примере по первой ссылке слой с эффектом плавного зума определяется как:

Код: Выделить всё

var tiled_resize_effect = new OpenLayers.Layer.WMS(
                "WMS tiled resize", 
                "http://labs.metacarta.com/wms/vmap0?",
                {layers: 'basic'}, 
                {transitionEffect: 'resize'} 

Код: Выделить всё

 {layers: 'basic'} 
лишь указывает, что слой является основным, как он может быть лишним? Да и без этого параметра ничего не меняется...
Может в WMS необходимо что то указать, чтоб этот эффект работал?

Re: OpenLayers - плавная прорисовка tile

Добавлено: 21 авг 2010, 07:44
dobeer
Сори, все заработало...когда вы говорили про лишний хеш, я не сразу понял что вы имели ввиду))...имелось ввиду не параметр лишний, а то что в определении слоя всего 4 блока должно быть, у меня же их получилось 5.

Re: OpenLayers - плавная прорисовка tile

Добавлено: 21 авг 2010, 12:52
Konstantin Tokar
dobeer писал(а):Сори, все заработало...когда вы говорили про лишний хеш, я не сразу понял что вы имели ввиду))...имелось ввиду не параметр лишний, а то что в определении слоя всего 4 блока должно быть, у меня же их получилось 5.
:) имелось ввиду именно то что я сказал. Я перловик, поэтому {...} машинально называю хэшами, наверно надо в JS их ассоциативными массивами называть. Кстати, эта Ваша ошибка с параметрами , мне кажется, для Openlayers очень характерна, сам на неё постоянно натыкался.