Thay đổi kích thước điểm khi thu nhỏ [đóng]


8

Tôi đã thêm một điểm trên bản đồ như thế này nhưng nó có kích thước tĩnh.

Làm thế nào để thay đổi kích thước điểm đó khi phóng to?

Bản đồ thu nhỏ

nhập mô tả hình ảnh ở đây

Câu trả lời:


5

Các Resize , như @Mapperz đề cập có lẽ là con đường để đi.

Ngoài ra, nếu bạn có nhiều điểm, thay vì lặp qua tất cả các điểm thay đổi kích thước điểm, bạn có thể thay đổi pointRadiuskiểu của lớp trên thu phóng bản đồ để thay đổi xảy ra với tất cả các tính năng trong một cuộc gọi. Tôi không thể nói chắc chắn hiệu suất nào tốt hơn, nhưng tôi sẽ tưởng tượng việc thay đổi phong cách sẽ có nhiều điểm.

Phương pháp tạo kiểu có những nhược điểm như không có nhiều tùy chọn như Resize hiện (tỷ lệ, gốc, tỷ lệ), nó chỉ là một bán kính.

Đây là một DEMO

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


6

Thay đổi kích thước các tính năng theo lập trình bằng cách sử dụng Openlayers v2.12

nhập mô tả hình ảnh ở đây

 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/release/OpenLayers-2.12/examples/resize-features.html Xem> Nguồn


xin lưu ý rằng điểm có màu xanh lam là kích thước tĩnh
bios

3
bạn có thể buộc điểm không thay đổi kích thước quá mặc định - đọc tài liệu openlayers về hình học - dev.openlayers.org/docs/files/OpenLayers/Geometry/Point-js.html [thay đổi kích thước là một tùy chọn]
Mapperz

1

Bạn có thể tạo kiểu tính toán Bán kính điểm tùy thuộc vào Map Zoomlevel:

        // 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});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.