繁体   English   中英

如何防止图像缩放在openlayers上缩放?

[英]How to prevent image from resizing on zoom in openlayers?

执行此操作后,我在地图上得到了两个点,但是当我缩放时,图像变小了。

如何保持图像尺寸固定? 以下是JavaScript代码。

function init() {
    var feature_data = {
        "type":"FeatureCollection",
        "features": [{
            "type":"Feature",
            "id":4,
            "geometry": {
                "type":"Point",
                "coordinates": [65.216,33.677]
            },
            "properties": {
                "name":"Afghanistan",
                "population":25067407,
                "pop_0_14":47,
                "pop_15_59":49.3,
                "pop_60_above":3.7
            }
        },  
        {
           "type":"Feature",
           "id":8,
           "geometry": {
               "type":"Point",
               "coordinates":[20.068,41.143]
           },
           "properties: {
               "name":"Albania",
               "population":3153731,
               "pop_0_14":26.3,
               "pop_15_59":61.4,
               "pop_60_above":12.3
            }
        }]
    };

    var map = new OpenLayers.Map('map_element',{});
    var wms_layer = new OpenLayers.Layer.WMS('OpenLayers WMS',
        'http://vmap0.tiles.osgeo.org/wms/vmap0', 
        {layers: 'basic'},
        {}
    );

    var format_geojson = new OpenLayers.Format.GeoJSON({});
    var vector_strategies = new OpenLayers.Strategy.Cluster({});
    var vector_layer= new OpenLayers.Layer.Vector('bar graph visualization',
        {strategies: vector_strategies}
    );
    vector_layer.addFeatures(format_geojson.read(feature_data));
    map.addLayers([wms_layer,vector_layer]);
    if(!map.getCenter()) {
        map.zoomToMaxExtent();
    }
}

实际上,您实际上想在每次缩放更改后在这些点上强制执行一个调整大小事件。

您可以侦听缩放事件并更新pointRadius样式属性

或者,您可以侦听缩放事件并使用调整大小功能调整每个点要素的大小

map.events.register("zoomend", map, function() {
    var currentZoom = map.getZoom();
    // check for desired zoom levels
    if (currentZoom == 5) {

        // update the style's pointRadius 
        // style.pointRadius = newRadius;

        // OR
        // resize each individual point feature 
        // loop through the point features
            // pointFeature.geometry.resize(scale, origin);

        // and after either strategy
        // redraw the point layer 

    } else if (currentZoom == 6) {
        ...
    } ...
}    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM