Größenänderung beim Verkleinern [geschlossen]

8

Ich habe einen Punkt auf dieser Karte hinzugefügt, der jedoch statisch ist.

Wie kann ich die Größe dieses Punkts beim Zoomen ändern?

Karte beim Verkleinern

Geben Sie hier die Bildbeschreibung ein

Bios
quelle

Antworten:

5

Die Größe ändern , als @Mapperz erwähnte, ist wahrscheinlich der Weg.

Alternativ können Sie den Stil der Ebene ändern , wenn Sie viele Punkte haben, anstatt alle Punkte zu durchlaufen, deren Größe geändert wirdpointRadius sodass die Änderung für alle Funktionen in einem Aufruf erfolgt. Ich kann nicht sicher sagen, was eine bessere Leistung ist, aber ich würde mir vorstellen, den Stil zu ändern, wenn es viele Punkte gibt.

Die Styling-Methode hat Nachteile, da sie nicht so viele Optionen bietet wie die Größenänderung (Skalierung, Ursprung, Verhältnis), sondern nur einen Radius.

Hier ist eine DEMO

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

CaptDragon
quelle
6

Ändern Sie die Größe von Features programmgesteuert mit Openlayers v2.12

Geben Sie hier die Bildbeschreibung ein

 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 Ansicht> Quelle

Mapperz
quelle
Bitte beachten Sie, dass der Punkt in blauer Farbe statisch ist
BIOS
3
Sie können erzwingen, dass die Größe des Punkts nicht ebenfalls geändert wird. Dies ist die Standardeinstellung. Lesen Sie die Openlayers-Dokumentation zur Geometrie - dev.openlayers.org/docs/files/OpenLayers/Geometry/Point-js.html [Größenänderung ist eine Option]
Mapperz
1

Sie können einen Stil festlegen, der den Punktradius abhängig vom Zoomlevel der Karte berechnet:

        // 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
quelle