5 votos

¿Pueden tener recubrimientos de diferentes resoluciones de la capa de base?

Estoy tratando de ver un mapa regional sobre mapa base pero sin éxito. Durante la depuración he notado que mi mapa regional tiene un conjunto diferente de las resoluciones de la base. ¿Es esto permitido en OpenLayers?

Ver http://jsfiddle.net/Sq9hE/15/

Si cambia las opciones de mapa a utilizar `` de resoluciones array, entonces se cargarán las fichas regionales pero no el mapa base.

5voto

Gareth Jenkins Puntos 1480

Este es un molesto comportamiento de ArcGIS: para iniciar el zoom número de nivel en el primer nivel de la escala del mapa de servicio, en lugar de alinear a la de facto de zoom/escala de coincidencia de lleno en el mundo de los servicios.

Si es posible (es decir, si usted tiene el control y puede hacer cambios a los YR_StreetMap servicio), yo recomendaría cambiar la escala definida por el rango de a coincide con el estándar como World_Street_Map (es decir, el nivel cero = 1:591M). No es necesario crear el extra de azulejos para esos niveles de zoom, o usted podría crear simples marcadores de posición de los azulejos.

No estoy seguro de los detalles de OpenLayers -- puede ser una manera más fácil de hacerlo. Cambiar la URL a varios azulejos (como en Aragón de la respuesta) es sin duda otra manera de arreglar el nivel de zoom de la discrepancia. Creo que hacer todo lo que el mismo es más bonito: de esa manera, el mosaico de referencias (por ejemplo, z/y/x) son los mismos entre los servicios.

3voto

texai Puntos 178

tal vez hay una manera fácil de resolver esto, pero si decidimos ir por el camino difícil, usted puede escribir su propio mecanismo de caché para overlaping ciertos niveles de zoom con su yorkLayer y su ropa interior térmica.

Archivo y Carpeta de Mecanismos:

z = zoom
x = folder name
y = file name

Mapa De Google: z/x/y.jpg

ArcGIS Caché: z/y/x.jpg

Example Image Adress:

http://ww4.yorkmaps.ca/ArcGIS/rest/services/CacheMaps/YR_StreetMap/MapServer/tile/0/633/286

TMS Caché: z/x/((2**z - 1) -y).jpg

y usted puede usar esto:

var yorkUrl = 'http://ww4.yorkmaps.ca/ArcGIS/rest/services/CacheMaps/
               YR_StreetMap/MapServer/tile/';

....

function get_my_url (bounds) {
        var res = this.map.getResolution();
        var x = Math.round ((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
        var y = Math.round ((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
        var z = this.map.getZoom();

        var path = z + "/" + x + "/" + y + "." + this.type;
        var url = this.url;
        if (url instanceof Array) {
            url = this.selectUrl(path, url);
        }
        return url + path;       
    };   



var yorkLayer = new OpenLayers.Layer.TMS("YorkLayer", yorkUrl , { 'type':'png', 
                'getURL':get_my_url });
    yorkLayer.isBaseLayer = false;

pero no olvides que tienes que superar los sesos para conseguir cierto resultado...El punto a enfocar es que get_my_url función...

espero te sirva de ayuda...

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X