Cambio de tamaño del punto de alejamiento [cerrado]


8

He agregado un punto en el mapa como este, pero tiene un tamaño estático.

¿Cómo cambiar el tamaño de ese punto al hacer zoom?

Mapa al alejar

ingrese la descripción de la imagen aquí

Respuestas:


5

El cambio de tamaño , como mencionó @Mapperz, es probablemente el camino a seguir.

Alternativamente, si tiene muchos puntos, en lugar de recorrer todos los puntos redimensionándolos, puede cambiar el pointRadiusestilo de la capa en el zoom del mapa para que el cambio ocurra en todas las entidades en una sola llamada. No puedo decir con certeza cuál es el mejor rendimiento, pero me imagino que cambiaría el estilo si hubiera muchos puntos.

El método de estilo tiene inconvenientes, como no tiene tantas opciones como Resize (escala, origen, relación), es solo un radio.

Aquí hay una DEMO

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí


6

Cambiar el tamaño de las funciones de forma programática con Openlayers v2.12

ingrese la descripción de la imagen aquí

 map.addLayer(vectorLayer);
        map.setCenter(new OpenLayers.LonLat(point.x, point.y), 5);
        vectorLayer.addFeatures([pointFeature, lineFeature, polygonFeature]);

    }

    var origin = new OpenLayers.Geometry.Point(-111.04, 45.68);
    function resizeFeatures(scale) {
        pointFeature.geometry.resize(scale, origin);
        lineFeature.geometry.resize(scale, origin);
        polygonFeature.geometry.resize(scale, origin);
        vectorLayer.redraw();
    }

http://dev.openlayers.org/releases/OpenLayers-2.12/examples/resize-features.html Ver> Fuente


tenga en cuenta que el punto en color azul es de tamaño estático
BIOS

3
puede forzar el punto para que no cambie el tamaño, que es el predeterminado - lea la documentación de Openlayers sobre geometría - dev.openlayers.org/docs/files/OpenLayers/Geometry/Point-js.html [cambiar el tamaño es una opción]
Mapperz

1

Puede un estilo que calcule el radio del punto según el nivel de zoom del mapa:

        // var map = my OpenLayers.Map object
        var styleSel = new OpenLayers.Style({
            pointRadius: "${radius}",
            graphicName: "circle",
            strokeColor: "#004CFF",
            strokeWidth: 2,
            fillOpacity: 0

        }, {
            context: {
                radius: function (feature) {
                    var pix = map.getZoom() * 10; // ten time the zoo level
                    return pix;
                }
            }
        });
        var styleMapSelect = new OpenLayers.StyleMap({
        "default": styleSel
        });
        var layer= new OpenLayers.Layer.Vector("myLayer", {styleMap: styleMapSelect});
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.