hallo,
da die Anzahl nicht gleich bleibt (wie gesagt, da sind zum Beispiel Funktionen wie "zoomen" und "pan") wird je nach Anzahl i der sichtbaren Punkte (insgesamt 5000) das gleiche Bild i mal dargestellt. Beim naechsten Schritt eben weniger oder mehr. Ich berechne ja die Positionen neu, nur bleiben die alten Punkte eben stehen. Ich kann ja mal den Code zeigen:
Das kann nicht sein, wenn du mit dem Skript die Punkt neu berechnest sind es ja nicht neue Punkte sondern die alten.
aber dieses Skript krankt.
function position(px) {
for(var i=0; i<=PN.length; i++) {
//Algorithmus: point inside rectangle
if ((NO[i]>=minN) && (EA[i]>=minE) && (NO[i]<=maxN) && (EA[i]<=maxE))
//distance bbox-photopoint (left-bottom)
dx[i]=NO[i]-minN;
dy[i]=EA[i]-minE;//pixeldistance
//change to int + x <---> y
pixelx[i]=Math.floor(dy[i]/p);
pixely[i]=Math.floor(400-(dx[i]/p));//get the right one (eval)
und zwar hier:
obj=eval("pp"+i);
eval ist hier nicht nur überflüssig, sondern macht das Skript um einige Faktoren langsamer. Gerade bei deinem Skript sollte dies ein Punkt sein den du beachten solltest.
Um an das Image zu kommen reciht ganz einfach:
obj= document.images["pp" + i];
Je nach browser ist das 5 bis 10 mal schneller.
obj.style.left = pixelx[i];
obj.style.top = pixely[i];
obj.style.display="inline";
Das ist unwichtig (oder so gar falsch?)
p = px;
Was macht das?
}
}
}function customize() {
//Loop through the array
for(var i=0; i<=PN.length; i++) {
if ((NO[i]>=minN) && (EA[i]>=minE) && (NO[i]<=maxN) && (EA[i]<=maxE)) {
document.write("<img id="pp" + i +"" src="pp.gif" width="8" style="display:none;position:absolute;top:10;left:10">");
bei top und left fehlt eine Einheit oder nimm 0.
Trotz allem kann ich dein Problem nicht nachvollziehen, da sich ja die Anzahl der Punkte nicht ändert insofern auch keine Punkte an der alten Position bleiben sollten.
Kann man sich das vielleicht irgendwo mal angucken?
Struppi.