[opengeodb] Neuentwicklung einer Geo-class in PHP

prog wut progwut at googlemail.com
Mit Aug 20 21:05:18 CEST 2008


Hi jongleur,

wenn Du Daten für die Karte hast, wie z.B. deutschland.gif, dann wäre es
> schön, nur das Land angeben zu müssen, so dass sich die Klasse die
> Grafikdatei und die range-Parameter selbst sucht - denn das gehört ja
> normalerweise zusammen.

Ich mache mir hier jetzt nicht sicherlich die Menü von Ländern die
Range-Parameter zu ermitteln ;). Wenn hier welche gepostet werden, kann ich
gerne etwas aufnehmen wie setRangeByCountry()


> >     $range = array();
> >     $range['x']['min'] = 5.5201;
> >     $range['x']['max'] = 15.0237;
> >     $range['y']['min'] = 47.1615;
> >     $range['y']['max'] = 55.0333;
> >     // Range setzen
> >
> hätte nicht ein 1D-Array gereicht? $range[xmin, ymin, xmax, ymax]
> bei 2D würde ich wenigstens logischerweise nach Punkten sortieren - die
> also in der ersten Dimension unterscheiden, also $range[min][x],
> $range[min][y], $range[max][x], $range[max][y]

Finde ich jetzt ist Geschmackssache. Alle Positionsangaben sind in einem
Array der Form x=>val y=>val. Deshalb eben auch x=>min=>val.


> >     $obj->setRange($range);
> eine zusätzliche Methode der Form
>    $obj->setRange($minx, $miny, $maxx, $maxy)
> wäre sinnvoll.

Habe die bestehende setRange in setRangeByAry umbennannt. setRange hat nun
deine beschriebene Signatur und ruft intern setRangeByAry auf.


>     // Zusätzlich eingezeichneten Punkt über eine Imagemap verfügbar
> > machen
> >     // Farbe des eingezeichneten Punktes ist col
> >     $geo = array('lon'=>50.59,
> >                            'lat'=>11.2,
> >                            'write' =>     TMyMap::WRITE_AREASHAPE+
> >                                                  TMyMap::WRITE_POINT+
> >                                                  TMyMap::WRITE_DIV,
> >                            'color' => array('r' => 1, 'g' => 255, 'b'
> > =>255),
> >                            'areashape' =>
> > array('href'=>'http://www.google.de', 'title'=>'google!',
> 'alt'=>'google')
> >                           );
> >
> >     $obj->writeGeoObj($geo);
> >     // Eine location einzeichen an der Position lon, lat.
> >
> s.o.

Wie gesagt Geschmackssache ;).


> >     // Radien um die Location malen mit 20 und 40px Abstand
> >     // Farbe der Radien bei color
> >     $ra= array('radius' =>
> >                     array('size' => 20,
> >                         'color' => array('r'=>255, 'g'=>0, 'b'=>0)
> >                     ),
> >                     array('size' => 40,
> >                         'color' => array('r' => 0, 'g'=>255, 'b'=>0))
> >             );
> >     $obj->writeRadius($geo,$ra);
> >
> >
> optional wären Abstände in (kilo)metern schön, die dann natürlich
> entsprechend umgerechnet werden müssten

Ich werde mal schauen wie ich dann die Signatur ändere, bzw. eine weitere
Methode einführ.



> >                 <div id="<?php echo md5($geo['lon'].$geo['lat']); ?>"
> > class="map_div" style="top:<?php echo $geo['div']['pos']['x'];
> >
>
> MD5-Hashes können mit einer Ziffer beginnen, was als id in html nicht
> erlaubt ist - hier solltest Du einen Buchstaben voranstellen.
>
Ja, mir ging es mehr darum zu zeigen, wie mann jeder DIV eine eindeutige ID
zuordnen kann, dann eben meinetwegen id="id_<?php echo
md5($geo['lon'].$geo['lat']); ?>"


sinnvoll wäre außerdem, den html-code auch direkt aus der Klasse heraus
> erzeugen zu lassen - mit einer Methode wie
>    echo $obj->getMapAsHTML();
>
Da bin ich kritisch. Die Klasse soll ja mehr bei der Entwicklung
unterstützten und nicht Code erzeugen der sofort lauffähig ist. Ich glaub
kaum, dass diese Methode dann genutzt werden würde, da wohl jeder noch seine
Anpassungen haben will (z.B. den Code für die DIVs an einer anderen Stelle
ausgeben als die Map, um die Map noch einen Rahmen oder sonstwas. Das könnte
man zwar viel mit CSS und Parametern machen, würde dass aber viel zu sehr
aufblähen.



> Was vermutlich außerdem noch fehlt ist die Abfrage, ob die erstellten
> Punkte auch innerhalb der range liegen, über die Koordinaten außerhalb
> des Kartenbildes vermieden werden müssten.
>
Diese Prüfung fehlt, ich habe Sie nun eingebaut.
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: http://lists.phpbar.de/pipermail/opengeodb/attachments/20080820/53bc2ca0/attachment.htm