Polygone verschwinden nach dem Zeichnen in der TMS Layered Openlayers-Karte
-
27-10-2019 - |
Frage
Ich bin sehr neu in Openlayers und probiere die TMS-Ebene für gekachelte Bilder aus, die mit gdal2tiles erstellt wurden.Grundlegende Dinge wie Schwenken / Zoomen funktionieren einwandfrei und jetzt versuche ich, die Bearbeitungs-Symbolleiste hinzuzufügen und einige Polygone auf der Karte zu zeichnen.Sobald ich das Polygon zeichne oder den Punkt auf der Karte platziere, verschwindet das Polygon / der Punkt.Vermisse ich etwasWie debugge ich das?
Hier ist mein Code (ich versuche ihn auf dem von gdal2tiles generierten HTML-Code).
<script type="text/javascript">
var map;
var mapBounds = new OpenLayers.Bounds( 0.0, -612.0, 857.0, 0.0);
var mapMinZoom = 0;
var mapMaxZoom = 2;
// avoid pink tiles
OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;
OpenLayers.Util.onImageLoadErrorColor = "transparent";
function init(){
var options = {
controls: [],
maxExtent: new OpenLayers.Bounds( 0.0, -612.0, 857.0, 0.0 ),
maxResolution: 4.000000,
numZoomLevels: 3
};
map = new OpenLayers.Map('map', options);
var layer = new OpenLayers.Layer.TMS( "TMS Layer","",
{ url: '', serviceVersion: '.', layername: '.', alpha: true,
type: 'png', getURL: overlay_getTileURL
});
map.addLayer(layer);
map.zoomToExtent( mapBounds );
map.addControl(new OpenLayers.Control.PanZoomBar());
map.addControl(new OpenLayers.Control.MousePosition());
map.addControl(new OpenLayers.Control.MouseDefaults());
map.addControl(new OpenLayers.Control.KeyboardDefaults());
var vlayer = new OpenLayers.Layer.Vector( "Editable" );
map.addControl(new OpenLayers.Control.EditingToolbar(vlayer));
}
function overlay_getTileURL(bounds) {
var res = this.map.getResolution();
var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
var y = Math.round((bounds.bottom - this.maxExtent.bottom) / (res * this.tileSize.h));
var z = this.map.getZoom();
if (x >= 0 && y >= 0) {
return this.url + z + "/" + x + "/" + y + "." + this.type;
} else {
return "http://www.maptiler.org/img/none.png";
}
}
</script>
Lösung
Sie müssen die Vektorebene auch zur Karte hinzufügen.
var vlayer = new OpenLayers.Layer.Vector( "Editable" );
map.addLayer(vlayer); // HERE
map.addControl(new OpenLayers.Control.EditingToolbar(vlayer));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow