Xây dựng các hàm xử lý

Một phần của tài liệu Xây dựng hệ thống quản lý bản đồ số dựa trên công nghệ mapserver (Trang 74 - 76)

Sử dụng PHP/ MapScript truy cập vào các hàm API của MapServer để vẽ bản đồ. Xây dựng một ứng dụng MapServer hiển thị bản đồ với các chức năng pan, zoom, bật tắt các layer thành phần bản đồ. Hiển thị các địa điểm nhà hàng, khách sạn trên bản đồ, kết nối với cơ sở dữ liệu MySql lấy ra thông tin thuộc tính của các đối tượng đó trên bản đồ.

- Hàm img2map(): chuyển từ tọa độ màn hình về tọa độ ảnh function img2map($width,$height,$point,$ext) {

$minx = $ext->minx; $miny = $ext->miny; $maxx = $ext->maxx; $maxy = $ext->maxy;

if ($point->x && $point->y){ $x = $point->x; $y = $point->y; $dpp_x = ($maxx-$minx)/$width; $dpp_y = ($maxy-$miny)/$height; $x = $minx + $dpp_x*$x; $y = $maxy - $dpp_y*$y; } $pt[0] = $x;

$pt[1] = $y; return $pt; }

- Hàm map2img() : Chuyển từ tọa độ bản đồ về tọa độ màn hình

function map2img($width,$height,$point,$ext) { if ($point->x && $point->y){

$ppd_x = $width/($ext->maxx - $ext->minx); $ppd_y = $height/($ext->maxy - $ext->miny); $p[0] = $ppd_x * ($point->x - $ext->minx);

$p[1] = $height - $ppd_y * ($point->y - $ext->miny); settype($p[0],"integer");

settype($p[1],"integer"); }return $p;}

- Hàm GetStoreTable() lấy ra thông tin thuộc tính của một nhà hàng trên bản đồ trong bảng store.

function GetStoreTable() {

@mysql_connect("localhost", "root", "password") or die("Could not connect to MySQL server!");

@mysql_select_db("restaurant") or die("Could not select database"); $query = "SELECT * FROM store";

$result = mysql_query($query); $i = 0;

while ( $row = mysql_fetch_array($result,MYSQL_NUM) ) { $qresult[$i] = $row;

$i++; }

return $qresult; }

- Hàm AddPoint(): Thêm các điểm trên bản đồ là vị trí của các nhà hàng, khách sạn theo kinh độ và vĩ độ của nhà hàng đó, được lưu trong cơ sở dữ liệu.

function AddPoints ( $map, $qresult ) {

$this_layer = $map->getLayerByName('poi'); $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[3],$row[2]); $ln[$i]->add($poi[$i]); $shp[$i]->add($ln[$i]); $shp[$i]->set(index, $row[0]);

$this_layer->addFeature( $shp[$i] );$i++; }return;

}

Một phần của tài liệu Xây dựng hệ thống quản lý bản đồ số dựa trên công nghệ mapserver (Trang 74 - 76)