我正在尝试找出最好的或最有效的方法。
我的网站在服务器端用 PHP 编写,在客户端使用 MySQL 数据库并使用 javascript 和 jQuery。
用户来到这个包含图像 map 的特定页面(即map.php)。该 map 上有五个不同的可点击区域。每个区域都有一个图像队列,这些图像将进入队列,当用户单击图像时按顺序加载每个图像。例如,如果单击区域 A,则可能会生成队列 A1.jpg、A2.jpg、A3.jpg、A4.jpg、map.jpg。首先,它会加载图像 A1.jpg,当用户单击该图像时,它会加载 A2.jpg 等。最后一个图像将它们返回到主 map 。
当他们单击主 map 上的五个区域之一时,javascript 会删除所有可单击区域并创建一个新区域,该区域是用户单击的整个图像。返回到map.jpg 还会重新添加五个图像 map 区域。
让事情变得更复杂一些。 5 个区域都没有相同的队列,您可能不会一直返回到相同的图像队列。
例如,第一次单击区域 A 时,您可能会浏览 A1、A2、A3、A4 和 map 。他们第二次返回 A 时,队列可能是 A3、A4、 map 。通过查看外部页面(map.php 之外)的触发器可能会将下一个队列变成 A5、A3、A4 或 A6、A3、A4 或 A7、A3、A4。最终图像队列可能是 A8、A9、A10、A11、A12、...A18。
图像映射区域B、C、D和E都可以有不同的图像队列。
现在我正在考虑如何做到这一点,但无论我如何尝试编写它,它似乎都过于复杂,必须有更好的方法。我想到可能将每个可能的图像队列存储在数据库中,然后将每个用户所处的“状态”存储在map.php上。但数据库状态可能需要更改,并且由于前端是用 JavaScript 编写的,我不确定如何执行此操作。还有一个问题是预加载图像以使其尽可能平滑。
这就是为什么我来这里尝试征求想法和意见,尝试并交换想法以帮助我想出更好的方法来做到这一点。
最佳答案
听起来您正在克隆谷歌地图。
您可以尝试将状态服务器端存储在 session 中。当用户单击 A1 时,您会执行一个 ajax 请求,告诉服务器 A1 已被单击,服务器会响应 A1 放大区域的图像列表。
这样,当用户单击缩小时,服务器可以根据先前单击的区域以正确的图像集进行响应。
您可以考虑将图像存储在分层数据库中。因此,图像 A1 具有 A 的父图像。您单击 A 上的缩放,执行查询以获取具有 A 的父图像的所有图像,这将为您提供新 map 。
类似地,当您单击“缩小”时,您会在 session 中存储 A,因此您将获得与 A 具有相同父级的所有图像。
因此,您需要在 session 中存储的只是队列中单击的图像。放大时插入队列,缩小时弹出队列。
关于php - 不知道如何解决这个 javascript/图像映射/PHP 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4661549/