Ponto de redimensionamento ao diminuir o zoom [fechado]

8

Eu adicionei um ponto no mapa como este, mas é estático em tamanho.

Como redimensionar esse ponto no zoom?

Mapa com menos zoom

insira a descrição da imagem aqui

BIOS
fonte

Respostas:

5

O redimensionamento , como o @Mapperz mencionou, é provavelmente o caminho a percorrer.

Como alternativa, se você tiver muitos pontos, em vez de percorrer todos os pontos que os redimensionam, poderá alterar o pointRadiusestilo da camada no zoom do mapa para que a alteração ocorra com todos os recursos em uma chamada. Não posso dizer com certeza qual é o melhor desempenho, mas imagino que a mudança de estilo mudaria se houver muitos pontos.

O método de estilo tem desvantagens, pois não possui tantas opções quanto o redimensionamento (escala, origem, proporção), é apenas um raio.

Aqui está uma DEMO

insira a descrição da imagem aqui insira a descrição da imagem aqui

CaptDragon
fonte
6

Redimensionar recursos programaticamente usando o Openlayers v2.12

insira a descrição da imagem aqui

 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 Visualizar> fonte

Mapperz
fonte
Por favor note que o ponto na cor azul é estático em tamanho
bios
3
você pode forçar o ponto a não redimensionar também esse é o padrão - leia a documentação dos openlayers em geometria - dev.openlayers.org/docs/files/OpenLayers/Geometry/Point-js.html [redimensionar é uma opção]
Mapperz
1

Você pode usar um estilo que calcule o raio do ponto, dependendo do nível de zoom do 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});
David
fonte