[Mapserver-DE] Refresh mit PHP MapScript
Kai Behncke
Kai-Behncke at gmx.de
Mon Okt 9 20:23:31 CEST 2006
-------- Original-Nachricht --------
Datum: Mon, 9 Oct 2006 17:39:25 +0200
Von: Silke Reimer <Silke.Reimer at intevation.de>
An: mapserver-de at freegis.org
Betreff: Re: [Mapserver-DE] Refresh mit PHP MapScript
> On Mon, Oct 09, 2006 at 12:09:57PM +0200, Olga Sacharow wrote:
> > Hallo an alle!
> >
> > Ich möchte in meinen WMS mit PHP MapScript einen Refresh Button
> > einbauen, der die neu gewählten Ebenen in die Karte mit einbaut.
> > Was bei mir jedoch passiert ist, dass der Maßstab immer wieder auf
> > Full Extent springt und nicht in dem aktuellen bleibt. Beim
> > Programmieren gehe ich dabei vor, wie bei Recenter und setzte den
> > Kartenmittelpunkt aber schon fest.
> >
> > In PHP:
> >
> > if ($HTTP_POST_VARS ["refresh"]) {
> > $zoom_factor=1;
> > $my_point = ms_newpointObj();
> > $my_point->setXY(200,270) //Kartenmittelpunkt
> > $map->zoompoint($zoom_factor, $my_point, $map->width, $map->height,
> $my_extent); }
>
> Wo wird denn die Variable $my_extent gesetzt? Wenn das an dieser
> Stelle vergessen wird, dürfte das der Grund für den Fehler sein.
>
> Mit freundlichen Grüßen,
>
> Silke
>
Hallo allerleits,
eine Möglichkeit könnte so aussehen (man muss dafür sorgen, dass nicht der
Ursprungsextent gesetzt wird, sondern der aktuelle Extent übergeben wird):
Als Variable abspeichern (nachdem die Karte erstellt wurde):
$extent_to_html = $map->extent->minx." ".$map->extent->miny." "
.$map->extent->maxx." ".$map->extent->maxy;
und in einem HTML-Formular übergeben:
<INPUT TYPE=HIDDEN NAME="extent" VALUE="<?php echo $extent_to_html?>">
Dann, nachdem die Formularwerte übergeben wurden, also in dem Skript welches für die Neugestaltung der Karte zuständig ist,
die übergebenen Parameter zerlegen:
$extent_to_set = explode(" ",$HTTP_POST_VARS["extent"]);
$map->setextent($extent_to_set[0],$extent_to_set[1],
$extent_to_set[2],$extent_to_set[3]);
....und ein neues Rechteckobjekt erstellen:
$my_extent = ms_newrectObj();
$my_extent->setextent($extent_to_set[0],$extent_to_set[1],
$extent_to_set[2],$extent_to_set[3]);
...und dann Zeichnen:
$map->zoompoint($zoom_factor,$my_point,$map->width,$map->height,$my_extent);
Wenn man einen neuen Layer einbindet und den genannten Code integriert dann wird der zuletzt aktuelle Extent übergeben.
Viele Grüße, Kai
--
GMX DSL-Flatrate 0,- Euro* - Überall, wo DSL verfügbar ist!
NEU: Jetzt bis zu 16.000 kBit/s! http://www.gmx.net/de/go/dsl
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)