x

zoomTo Features


Geschrieben von Ghostrider82 (Gast) am 11. Juli 2014 18:05:44: [flux]

Hallo zusammen,

ich verwende folgenden Code, um Features (Linien, Punkte) dynamisch auf einer Karte zu platzieren.

var␣data=new␣OpenLayers.Layer.Vector("Linien",
{
loadend:␣function(){
},
protocol:␣␣␣new␣OpenLayers.Protocol.HTTP({
params:␣{mindist:␣1e6,␣id:␣123,␣startTimestamp:␣document.getElementById('start').innerHTML,␣stopTimestamp:␣document.getElementById('stop').innerHTML},
url:␣␣␣␣␣"data/map.php",
format:␣␣new␣OpenLayers.Format.GPX({extractWaypoints:true,␣extractAttributes:true}),
simplify:␣0.1,
}),
styleMap:␣␣␣new␣OpenLayers.StyleMap({
fillColor:␣"#B6CCDE",
fillOpacity:␣␣␣␣␣0.5,
pointRadius:␣␣␣␣␣6,
strokeColor:␣␣␣␣␣"red",
strokeWidth:␣␣␣␣␣3,␣//Breite␣des␣äußeren␣Kreisrings
strokeDashstyle:␣"solid",
graphicZIndex:␣1,
strokeOpacity:␣␣␣0.7}),
strategies:␣[new␣OpenLayers.Strategy.BBOX({ratio:␣1,␣resFactor:␣1.1})],
projection:␣new␣OpenLayers.Projection("EPSG:4326"),
moveTo:␣function␣(bounds,␣zoomChanged,␣dragging)␣{
if␣(zoomChanged)␣{
this.strokeColor␣=␣"white";
this.protocol.params.mindist␣␣␣␣␣␣␣␣=␣1000000␣/␣Math.pow(2,␣this.map.getZoom());
this.protocol.params.imei_id␣␣␣␣␣␣␣␣=␣document.getElementById('imei').value;
this.protocol.params.startTimestamp␣=␣␣document.getElementById('start').innerHTML;
this.protocol.params.stopTimestamp␣␣=␣␣document.getElementById('stop').innerHTML;
}
OpenLayers.Layer.Vector.prototype.moveTo.apply(this,␣arguments);
}
});

Ich möchte, dass die Karte dann so einzoomed, dass alle Features darauf sichtbar sind.

Meine Idee war:

var␣dataExtent␣=␣data.getDataExtent();
map.zoomToExtent(dataExtent);

Aber da erhalte ich lediglich die Meldung, dass data nicht definiert sei, dabei handelt es sich dabei um das Vectorlayer.

Hat jemand eine Idee, wie ich in den Kartenbereich zoomen kann, dass die Features alle sichtbar sind?

Viele Grüße
Boris


Antworten: