public Form1()
{
InitializeComponent();
this.webBrowser1.Navigate("http://yandex.ru");
this.webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
this.webBrowser1.Document.Body.MouseOver += this.Body_MouseOver;
}
void Body_MouseOver(object sender, HtmlElementEventArgs e)
{
e.ToString();
}
$query = $this->db->query('SELECT
pan.id,
ROUND(ATAN(SQRT(POW(COS(RADIANS(pan.latitude)) * SIN(ABS(RADIANS('.$pano->longitude.')-RADIANS(pan.longitude))),2) + POW( COS(RADIANS('.$pano->latitude.')) * SIN(RADIANS(pan.latitude)) - SIN(RADIANS('.$pano->latitude.')) * COS(RADIANS(pan.latitude))*COS(ABS(RADIANS('.$pano->longitude.')-RADIANS(pan.longitude))),2))/(SIN(RADIANS(pan.latitude)) * SIN(RADIANS('.$pano->latitude.')) + COS(RADIANS(pan.latitude)) * COS(RADIANS('.$pano->latitude.'))* COS(ABS(RADIANS('.$pano->longitude.')-RADIANS(pan.longitude))))) * 6373000, 0) AS distance
FROM pano pan
WHERE pan.latitude IS NOT NULL
AND pan.longitude IS NOT NULL
AND pan.id != '.$pano->id);
$objects = array(array('lon' => 1, 'lat' => 2), ..., ...);
$cluster = array();
$levels = 10;
$firstRectWidth = 0.01; //самый маленький "квадрат" будет 1111 на 1111
for ($i = 0; $i < count($objects); $i++)
{
$obj = $objects[$i];
for ($level = 1; $level <= $levels; $level++)
{
$lon_index = ($obj->lon) / ($firstRectWidth * (2 ^ $level)); // не помню как степень в php
$lat_index = ($obj->lat) / ($firstRectWidth * (2 ^ $level)); // не помню как степень в php
$cluster[$level][$lon_index . "-" . $lat_index][] = $i;
}
}
// использование
$zoom = 1..10;
echo "кластеров ".(count($cluster[$zoom]))."<br >";
foreach ($cluster[$zoom] as $key => $value)
{
echo "область ".$key."<br >";
echo "кол-во элеметнов ". (count($value));
}
0000000000000000000000000
псевдо код
bool write(f, char[2][2] data, start_x, start_y, width)
{
f_seek(f, start_y * width + start_x);
f_write(f, data[0]);
f_seek(f, (start_y + 1) * width + start_x);
f_write(f, data[1]);
return true;
}
char[2][2] read(f, start_x, start_y, width)
{
char[2][2] result;
f_seek(f, start_y * width + start_x);
result[0] = f_read(f, 2); // читаем два элемента
f_seek(f, (start_y + 1) * width + start_x);
result[1] = f_read(f, 2); // читаем два элемента
}