[Mapserver-DE] point-layer mit mysql, php/mapscript und versch. symbolen?
Kai Behncke
kbehncke at igf.uni-osnabrueck.de
Fre Dez 1 15:35:26 CET 2006
> Ja, das stimmt. Das ist noch nicht optimal.
> Im Prinzip gibt es die Möglichkeit, die Legende manuell zu erstellen
> und dann einzubinden, das würde das Problem umgehen. Werd noch mal
> probieren, ob das mit dem Code nicht vielleicht doch noch eleganter
> geht
>
Man kann das auch so lösen, indem man prüft, welcher Legendeneintrag schon
vorhanden ist (und diesen dann ausläßt).
Das geht dann so:
function AddPoints ( $map, $qresult ) {
$i = 0;
foreach($qresult as $row) {
$poi[$i] = ms_newPointObj();
$ln[$i] = ms_newLineObj();
$shp[$i] = ms_newShapeObj(MS_SHAPE_POINT);
$poi[$i]->setXY($row[2],$row[3]);
$ln[$i]->add($poi[$i]);
$shp[$i]->add($ln[$i]);
$shp[$i]->set(index, $row[0]);
$array_kategorieeintraege[]=$row[4];
if ($row[4]=="$array_kategorieeintraege[$i]") {
$that_layer[i]=ms_newLayerObj($map);
$that_layer[i]->set('status',MS_ON);
$that_layer[i]->set ("name",$array_kategorieeintraege[$i]);
$that_layer[i]->set ("type",point);
$newclass=ms_newClassObj($that_layer[i]);
for ($y=0;$y<sizeof($array_kategorieeintraege);$y++) {
if ($array_kategorieeintraege[$i]==$array_kategorieeintraege[$y-1]) {
$bereits_vorhanden=1;
}
}
if ($bereits_vorhanden==0) {
$newclass->set ("name",$array_kategorieeintraege[$i]); }
$bereits_vorhanden=0;
$newstyle=ms_newStyleObj($newclass);
$newstyle->set("symbolname", $array_kategorieeintraege[$i]);
$newstyle->set("size", "15");
$newstyle->color->setRGB(0, 0, 255);
$that_layer[i]->addFeature( $shp[$i] );
}
$i++;
}
return;
}
Beste Grüße, Kai
--
Dipl.-Geogr. Dipl.-Umweltw. Kai Behncke
Institut für Geoinformatik und Fernerkundung (IGF)
Universität Osnabrück
Kolpingstr. 7
49074 Osnabrück
Raum: 01/308
Tel.: +49 541 969-4450
E-Mail: mailto:kbehncke at igf.uni-osnabrueck.de
Web: http://www.igf.uni-osnabrueck.de
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)