source: subversion/sites/other/freemap/common/tp.php @ 8877

Last change on this file since 8877 was 5736, checked in by nick, 12 years ago

various changes to Freemap/Osmajax?

File size: 4.1 KB
Line 
1<?php
2session_start();
3
4// 20/11/07 now uses Mercator, not OSGB
5
6################################################################################
7# This file forms part of the Freemap source code.                             #
8# (c) 2004-07 Nick Whitelegg (Hogweed Software)                                #
9# Licenced under the Lesser GNU General Public Licence; see COPYING            #
10# for details.                                                                 #
11################################################################################
12
13require_once('gpxnew.php');
14require_once('latlong.php');
15require_once('defines.php');
16require_once('Map.php');
17require_once('freemap_functions.php');
18
19
20// 070406 changed ['name'] to ['tags']['name'] for nodes, segments and ways
21// 070406 changed ['type'] to ['tags']['class'] for nodes
22
23///////////////////// CLASS DEFINITIONS /////////////////////////
24
25
26class Image
27{
28        var $im, 
29                $map, 
30                $backcol,
31                $trackpoint_colour,
32                $waypoint_colour,
33                $bottomleft_ll,
34                $topright_ll;
35
36        var $debug;
37
38        var $trackpoints;
39
40        function Image ($w, $s, $e, $n, $width, $height, $layers)
41        {
42                $this->map = new Map ($w,$s,$e,$n, $width, $height);
43                $this->im = ImageCreateTrueColor($width,$height);
44                $this->backcol = ImageColorAllocate($this->im, 220, 220, 220);
45                ImageFilledRectangle($this->im,0,0,$width,$height,$this->backcol);
46                ImageColorTransparent($this->im, $this->backcol);
47                $this->trackpoint_colour = ImageColorAllocate($this->im,255,255,0);
48                $this->waypoint_colour = ImageColorAllocate($this->im,80,0,80);
49
50                $this->bottomleft_ll = merc_to_ll($w,$s);
51                $this->topright_ll = merc_to_ll($e, $n);
52
53
54                /*
55                echo "trackpoints:";
56                print_r($this->trackpoints);
57                */
58        }
59
60        function draw($trackid)
61        {
62                $conn=mysql_connect('localhost',DB_USERNAME,DB_PASSWORD);
63                mysql_select_db(DB_DBASE);
64                $this->draw_trackpoints($trackid);
65                $this->draw_waypoints($trackid);
66                mysql_close($conn);
67                ImagePNG($this->im);   
68        }
69       
70        function draw_trackpoints($trackid)
71        {
72
73                        $q=
74                        ("select * from trackpoints where lat between ".
75                                $this->bottomleft_ll['lat'] ." and ".
76                                $this->topright_ll['lat']. " and lon between ".
77                                $this->bottomleft_ll['lon'] ." and ".
78                                $this->topright_ll['lon']);
79
80                        if($trackid)
81                                $q .= " and trackid=$trackid";
82
83                $result=mysql_query($q);
84                //echo "QUERY : $q";
85                while($row=mysql_fetch_array($result))
86                {
87                        $merc =ll_to_merc($row['lat'],$row['lon']); 
88                        $p = $this->map->get_point ($merc);
89                        ImageFilledEllipse
90                                ($this->im,$p['x'],$p['y'],5,5,$this->trackpoint_colour);
91                }
92
93        }
94
95        function draw_waypoints($trackid)
96        {
97                        $q=
98                        ("select * from waypoints where lat between ".
99                                $this->bottomleft_ll['lat'] ." and ".
100                                $this->topright_ll['lat']. " and lon between ".
101                                $this->bottomleft_ll['lon'] ." and ".
102                                $this->topright_ll['lon']);
103
104                        if($trackid)
105                                $q .= " and trackid=$trackid";
106
107                        $result=mysql_query($q);
108                        while($row=mysql_fetch_array($result))
109                        {
110                                $merc =ll_to_merc($row['lat'],$row['lon']); 
111                                $p = $this->map->get_point ($merc);
112                                ImageFilledEllipse
113                                ($this->im,$p['x'],$p['y'],10,10,$this->waypoint_colour);
114
115                                ImageString($this->im,3,$p['x']+8,$p['y']+8,$row['name'],
116                                                        $this->waypoint_colour);
117                        }
118        }
119}
120
121////////////////// SCRIPT BEGINS HERE /////////////////////
122
123$defaults = array("width" => 500, 
124                        "height" => 500,
125                        "bbox" => "-85000,6595000,-80000,6600000",
126                        "layers" => "none",
127                        "trackid" => null);
128
129$inp=array();
130
131foreach ($defaults as $field=>$default)
132{
133        if(valid_input($field,$_GET[$field]))
134                $inp[$field] = $_GET[$field];
135        elseif(valid_input($field,$_GET[strtoupper($field)]))
136                $inp[$field] = $_GET[strtoupper($field)];
137        else
138                $inp[$field] = $default;
139}
140
141$bbox = explode(",",$inp['bbox']);
142
143
144if(isset($error))
145{
146        echo "<html><head><title>Error!</title></head><body>$error</body></html>";
147}
148else
149{
150        if (!isset($_GET['debug']))
151                header('Content-type: image/png'); 
152       
153        $image = new Image(round($bbox[0]), round($bbox[1]), round($bbox[2]), 
154                                                round($bbox[3]),
155                                                $inp["width"],$inp["height"], $inp["layers"]);
156
157        $image->draw($inp['trackid']);
158}
159
160function valid_input($field,$value)
161{
162        if($field=="width" || $field=="height")
163        {
164                return wholly_numeric($value);
165        }
166        return $value;
167}
168?>
Note: See TracBrowser for help on using the repository browser.