0

我正在带回一个 GD 图像,它是从数据库中的用户信息生成的,现在在查看该图像的页面上。对于由相同类型的查询生成的图像,我有以下区域图,以创建指向该用户配置文件的链接。但是,数据库中可能有 40000 个用户......无论如何,我正在工作,但你可以想象它需要很长时间才能加载。

<map id="pixel" name="pixel">

<?
    $map_x_1 = 0;
    $map_y_1 = 0;

    $map_x_2 = 5;
    $map_y_2 = 5;

    $block_num = 1;

    while ($map_y_2 <= 1000) {

        while ($map_x_2 <= 1000) {

            $actual_x_cood = $map_x_1+1;
            $actual_y_cood = $map_y_1+1;

            $grid_search = mysql_query("SELECT *
                            FROM project
                            WHERE project_x_cood = '$actual_x_cood' AND project_y_cood = '$actual_y_cood'") or die(mysql_error());

            $block_exists = mysql_num_rows($grid_search);

            if ($block_exists == 1) {

                echo("<area shape=\"rect\" coords=\"$map_x_1, $map_y_1, $map_x_2, $map_y_2\" href=\"/block/$block_num/\" alt=\"\" title=\"$block_num\" />\n");

            } else {

                echo("<area shape=\"rect\" coords=\"$map_x_1, $map_y_1, $map_x_2, $map_y_2\" href=\"/block/$block_num/\" alt=\"\" title=\"$block_num\" />\n");

            }

            $map_x_1 = $map_x_1 + 5;
            $map_x_2 = $map_x_2 + 5;

            $block_num = $block_num+1;  

        }

        $map_y_1 = $map_y_1 + 5;
        $map_y_2 = $map_y_2 + 5;

        $map_x_1 = 0;
        $map_x_2 = 5;

    }
?>

</map>

我正在考虑在 div 的顶部放置一个快速的 jquery 加载屏幕,然后在页面完全加载后将其隐藏,这样看起来会更好。但我对它的想法不太满意,因为我只想更快地加载它。

那么有没有更快的方法来做到这一点,也许是 PHP?JS?谢谢!

4

2 回答 2

2

您应该考虑使用input:image元素。它将检索 xy 坐标作为内置功能,并且可以在 JavaScript 中使用或作为提交表单的一部分。

收到 xy 坐标后,您可以使用四叉树或其他算法在数据集中进行快速空间搜索。

于 2011-01-27T18:57:55.030 回答
1

您应该捕获图像地图中的坐标(使用 jquery 很容易)并将其传递给服务器,然后计算用户点击。

我对一个有 100 个值(1-100%)的比率栏做了类似的事情。但它是在原型中完成的,所以代码不会对你有太大帮助。

小提示:我必须从绝对点击位置中减去容器的左侧位置。

在 php 中,它的形式不是那么灵活,但要容易得多。你可以只指定一个输入类型的图像。坐标将作为后变量传递。

就像是

就足够了

于 2011-01-27T18:45:18.710 回答