$links = new kmlPrimative('Folder'); $links->setItem('name', 'Next Level...'); $prefix = $db->GetRow('select * from gridprefix where prefix=' . $db->Quote($square->gridsquare) . ' limit 1'); $left = $prefix['origin_x'] + intval($square->eastings / 20) * 20; $right = $left + 20 - 1; $bottom = $prefix['origin_y'] + intval($square->northings / 20) * 20; $top = $bottom + 20 - 1; $rectangle = "'POLYGON(({$left} {$bottom},{$right} {$bottom},{$right} {$top},{$left} {$top},{$left} {$bottom}))'"; $sql_where = "CONTAINS(GeomFromText({$rectangle}),point_xy)"; $photos = $db->GetAll("select \r\ngridimage_id,grid_reference,title,title2,imagecount,view_direction,natgrlen,realname,\r\nwgs84_lat,wgs84_long\r\nfrom gridimage_kml \r\nwhere {$sql_where} and tile = 1\r\norder by null"); foreach ($photos as $id => $entry) { $point = new kmlPoint($entry['wgs84_lat'], $entry['wgs84_long']); $title = combineTexts($entry['title'], $entry['title2']); if ($entry['imagecount'] == 1) { $placemark = new kmlPlacemark($entry['gridimage_id'], $entry['grid_reference'] . ' :: ' . $title, $point); $placemark->useCredit($entry['realname'], "http://{$_SERVER['HTTP_HOST']}/photo/{$entry['gridimage_id']}"); $html .= getHtmlLinkP($placemark->link, $entry['grid_reference'] . ' :: ' . $entry['title'] . ' by ' . $entry['realname']); $placemark->setItem('description', $placemark->link); $r = $entry['natgrlen'] > 4 ? '' : 'r'; if ($entry['view_direction'] != -1) { $placemark->useHoverStyle('p1d' . $r); $Style = $placemark->addChild('Style'); $IconStyle = $Style->addChild('IconStyle'); $IconStyle->setItem('heading', $entry['view_direction']); } else { $placemark->useHoverStyle('p1' . $r); } } else { $placemark = new kmlPlacemark($entry['grid_reference'], $entry['grid_reference'] . ' :: ' . $entry['imagecount'] . ' images e.g. ' . $title, $point); $placemark->setItem('description', "http://{$_SERVER['HTTP_HOST']}/gridref/{$entry['grid_reference']}"); $c = $entry['imagecount'] > 20 ? 20 : ($entry['imagecount'] > 4 ? 10 : $entry['imagecount']);
$db = NewADOConnection($GLOBALS['DSN']); if (!$db) { die('Database connection failed'); } $kml = new kmlFile(); $kml->atom = true; $stylefile = "http://{$CONF['KML_HOST']}/kml/style.kmz"; $kml->filename = "Geograph-Members.kml"; $folder = $kml->addChild('Document'); $folder->setItem('name', "Geograph British Isles Members"); $users = $db->GetAssoc("select\r\n\t\tuser.user_id,nickname,user.realname,images,gs.x,gs.y,gs.reference_index\r\n\t\tfrom user\r\n\t\t\tleft join user_stat using (user_id)\r\n\t\t\tinner join gridsquare gs on (home_gridsquare = gridsquare_id)\r\n\t\torder by realname"); foreach ($users as $user_id => $user) { list($wgs84_lat, $wgs84_long) = $conv->internal_to_wgs84($user['x'], $user['y']); $point = new kmlPoint($wgs84_lat, $wgs84_long); $placemark = new kmlPlacemark($user_id, $user['realname'] . ' :: ' . $user['images'], $point); $placemark->useCredit($entry['realname'], "http://{$_SERVER['HTTP_HOST']}/profile/{$user_id}"); if (empty($user['nickname'])) { $placemark->setItemCDATA('description', $placemark->link); } else { $placemark->setItemCDATA('description', "Nickname: {$user['nickname']}<br/>{$placemark->link}"); } $placemark->useHoverStyle('def'); $folder->addChild($placemark); } $base = $_SERVER['DOCUMENT_ROOT']; $file = "/kml/members.kmz"; $kml->outputFile('kmz', false, $base . $file); if (isset($_GET['debug'])) { print "<a href=?download>Open in Google Earth</a><br/>"; print "<textarea rows=35 style=width:100%>"; print $kml->returnKML();