Bild Nullpunkt

  • Themenstarter Themenstarter ByeBye 274521
  • Beginndatum Beginndatum
B

ByeBye 274521

Hallo,

bin seit langem auf der Suche nach der richtigen Koordinatenangabe.

Im Anhang habe ich ein Beispielbild hochgeladen. Ich möchte in OL3 die follgenden extent richtig angeben.
HTML:
Code:
<label class="radio" for="bild-switch_2">
<input id="bild-switch_2" class="bild-switch_1a" type="radio" name="bilder" value="Bild2" onchange="checkedRadioBtn('Haus.png', [750, 547], [-20, -10, 55, 20])" />Haus
</label>

JS:
Code:
function checkedRadioBtn(url, size, extProj){
var resultExt,  r2 = 0, ext = 1;
 
    if(extProj[0] < 0){
        ext = extProj[0] * (-1);
        //Dreisatz
        resultExt = (((extProj[2] + ext)*size[1])/size[0])+extProj[1];
    }else{
        resultExt = (((extProj[2] - extProj[0])*size[1]) / size[0])-extProj[1];
    }
    resultExt.toFixed(2);

    var newSizeProjection = new ol.proj.Projection({
        code: 'metrics',
        units: 'm',
        extent: [extProj[0], extProj[1], extProj[2], resultExt]  //Xmin, Ymin, Xmax, Ymax
    });
//remove
        map.removeLayer(baseLayer);

        //get layers and remove marker
        var allLayers = map.getLayers().getArray()[0];
        map.removeLayer(allLayers);

        for(var i = 0; i<icons.length; i++){
            map.removeLayer(icons[i]);
        }

        var extent = newSizeProjection.getExtent();
        var center = ol.extent.getCenter(extent);

        var newV = new ol.View2D({
            projection: newSizeProjection,
            center: center,
            zoom: 2
        });

        map.updateSize();
        map.addLayer(newL);
        map.getView().getView2D().setProjection(newSizeProjection);
        map.getView().getView2D().setCenter(center);
        $("#extentResult").text('Extent: ' +newSizeProjection.getExtent()[0].toFixed(2)+", "+newSizeProjection.getExtent()[1].toFixed(2)+", "+newSizeProjection.getExtent()[2].toFixed(2)+", "+newSizeProjection.getExtent()[3].toFixed(2));
};

Code, wenn ich eine Stelle anklicke damit die Koordinaten angezeigt werden.
Code:
map.on('click', function(evt){
            var coordinate = evt.coordinate;

            $("#result").text('You clicked here: x:' + coordinate[0].toFixed(2) + " m - y:" + coordinate[1].toFixed(2) + " m");
         
            overlay.setPosition(coordinate);
            content.innerHTML = '<p>You clicked here:</p></br><code>x: ' +  coordinate[0].toFixed(2) + ' m </br> y: ' + coordinate[1].toFixed(2) + ' m</code>';
            container.style.display = 'block';
    });

Meine Frage wäre wie kann ich den Nullpunkt nicht links definieren sondern wie kann ich dies rechts definieren? Spricht die Meterangabe am Bild sind gespiegelt worden. Nullpunkt fängt nicht wie gewohnt von links an sondern laut Bild von rechts. Also links 55 und rechts -20. Wenn ich die jeweiligen extent Bereich ändere, dann werden auch die Koordinaten nicht richtig angezeigt.
Wenn ich am Bild rechts klicke soll P(-10/2) angezeigt werden und nicht P(52/2).
Hoffe ihr wisst was ich meine.

Ich bedanke mich für eure HIlfe!
 

Anhänge

  • haus.png
    haus.png
    1,6 KB · Aufrufe: 8
Zuletzt bearbeitet von einem Moderator:
Ich habe jetzt follgendes ausprobiert und zeigt mir ein "Uncaught TypeError: undefined is not a function" ;-(

Code:
map.on('click', function(evt){
  coordinate = evt.coordinate;
  checkPopup(coordinate);
 
  });

Code:
function checkPopup(coordinate){
 
  if(document.getElementById('bild-switch_2').checked == true){
  overlay.setPosition(coordinate[0] = 45- coordinate[0], coordinate[1]);
  }else{
  overlay.setPosition(coordinate);
  }
 
  content.innerHTML = '<p>You clicked here:</p></br><code>x: ' +  coordinate[0].toFixed(2) + ' m </br> y: ' +  coordinate[1].toFixed(2) + ' m</code>';
  container.style.display = 'block';
 
};

Die 45 habe ich am Bild den Wert genommen wo der 0 Punkt liegt. Da es ja fix ist habe ich 45 immer minus die Position was beim alten Wert ist abgezogen um dann auf den richtigen Wert zu kommen. Wie 45-45= 0 also an der Position 45 wird dann 0 angezeigt an der x -Achse.

Kann mir einer helfen, wo der Fehler liegt ;--( ?
 
Ist erledigt. War an der falschen Position. bei content.innerHTML den Wert abgezogen, aber davor in eine Variable gespeichert und abgefragt, wenn das Radio angeklickt wurde.
 
Zurück