Se aventurando no OpenLayers
código-fonte, parece que tudo relacionado aos níveis de zoom é feito usando resoluções. Justo o suficiente, pois isso se relacionava diretamente ao espaço da tela.
No entanto, eu gostaria de usar escalas e definir mais explicitamente as escalas permitidas.
- Isso é possível?
Até agora, criei um conjunto de escalas que transformo em resoluções:
var scales = [500, 1000, 2000, 4000, 10000, 25000, 50000];
var resolutions = [];
for(var i = 0; i < scales.length; i++) {
resolutions.push(OpenLayers.Util.getResolutionFromScale(scales[i], units));
}
map = new OpenLayers.Map('', {
...
minScale: scales[scales.length - 1],
maxScale: scales[0],
resolution: resolutions,
numZoomLevels: scales.length,
...
});
Meu problema é que a primeira e a última escala são respeitadas, mas entre a resolução atual convertida em escala não está entre as que eu especifiquei.
- O que eu perdi?
fonte
scales
parâmetro na fonte ou nos documentos: dev.openlayers.org/docs/files/OpenLayers/Map-js.htmlÉ necessário definir unidades: units: "degrees"
String - As unidades nas quais a camada será exibida.
Isso afeta o cálculo da escala de resolução.
Fonte oficial: http://trac.openlayers.org/wiki/SettingZoomLevels
fonte