2012-06-29 2 views
9

Таким образом, фон моей реализации openlayers, кажется, сплющен в вертикальные полосы. Странно то, что это было не всегда так, но даже когда я спрятал все свои изменения до того момента, когда я знаю, что он работает, он все еще сломан. Меня заставляет задуматься, возможно ли что-то изменилось в отношении того, как поставляются плиточные активы. Я попытался переключиться между слоями osm и wms без каких-либо изменений, любая помощь будет оценена.Openlayers/Openstreetmap фон вертикально полосатый и обжаренный

Здесь уместна код:

initMap: function() { 
    var view = this; 
    var map = this.map = new OpenLayers.Map(); 
    map.render(this.$map[0]); 

    var wmsLayer = new OpenLayers.Layer.WMS("OpenLayers WMS", 
    "http://vmap0.tiles.osgeo.org/wms/vmap0?", {layers: 'basic'}); 

    var osmLayer = new OpenLayers.Layer.OSM(); 

    this.layers = { 
    point: new OpenLayers.Layer.Vector("Point Layer"), 
    line: new OpenLayers.Layer.Vector("Line Layer"), 
    polygon: new OpenLayers.Layer.Vector("Polygon Layer") 
    }; 

    this.setValue(this.value); 

    map.addLayers([this.layers.point, this.layers.line, this.layers.polygon, osmLayer]); 

    drawControls = { 
    point: new OpenLayers.Control.DrawFeature(this.layers.point, 
     OpenLayers.Handler.Point), 
    line: new OpenLayers.Control.DrawFeature(this.layers.line, 
     OpenLayers.Handler.Path), 
    polygon: new OpenLayers.Control.DrawFeature(this.layers.polygon, 
     OpenLayers.Handler.Polygon) 
    }; 

    this.layers[this.layerType].events.on({'sketchcomplete': function(feature) { 

    if (!view.multiple) { 
     // deactivate polygon layer once a polygon has been added 
     drawControls[view.layerType].deactivate(); 
    } 

    }}); 

    for(var key in drawControls) { 
    map.addControl(drawControls[key]); 
    } 

    if (this.layers[this.layerType].features.length) { 
    var bounds = this.layers[this.layerType].getDataExtent(); 
    var zoom = this.layers[this.layerType].getZoomForExtent(bounds); 
    var lon = (bounds.top - bounds.bottom)/2; 
    var lat = (bounds.right - bounds.left)/2; 
    map.setCenter(new OpenLayers.LonLat(lon,lat), 3); 
    map.zoomToExtent(bounds); 

    if (view.multiple) { 
     drawControls[view.layerType].activate(); 
    } 

    } else { 
    map.setCenter(new OpenLayers.LonLat(-11174482.03751,4861394.9982606), 4); 
    drawControls[view.layerType].activate(); 
    } 

    this.$('.clear').click(function(e) { 
    e.preventDefault(); 
    view.layers[view.layerType].destroyFeatures(); 
    drawControls[view.layerType].activate(); 
    }); 
}, 

Вот результат:

here is the output

ответ

19

Так что я нашел проблему. У бутстрапа Twitter есть строка в своем файле сброса, который устанавливает:

img { max-width: 100% } 

Это шумят изображения. Вы можете это исправить, выполнив:

img { max-width: none; } 
+0

Если вы не принимаете свой собственный ответ? – Knubo

+0

Большое вам спасибо! Хорошо сделано для определения этого! – Eamorr

+0

Через год этот вопрос и ответ решили мою проблему! – Daviddd

7
I was having the same problem, are you using bootstrap of twitter? 

I found out there was a selector for img elements that was affecting the map. I had the next selector into the bootstrap.css" 

img { 
    max-width: 100%; 
    vertical-align: middle; 
    border: 0; 
    -ms-interpolation-mode: bicubic; 
} 

I don't know whay the parameter max-width: 100%; makes the vertical stripes in my case. I remove the propertie max-width: 100% and now is working. 
2

Установка img { max-width: 100% } в img { max-width:none; } ли решить эту проблему.

Однако будет иметь непреднамеренное воздействие на изображения на вашем веб-сайте. Я также использую компонент карусели Bootstrap Twitter для изображений, и когда я сделал вышеизложенное, изображения не поместились в карусели. Поэтому я изменил его так, чтобы он ориентировался только на изображения в div OpenLayers/OpenStreetMap.

div#outlet_map img { max-width:none; } 
Смежные вопросы