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