我使用php和MySQL向Google V3地图添加标记,遵循Google Developers的说明。这些标记分布在一个很大的地理区域,并且在点击时具有指向其他站点页面的链接,但是当使用后退按钮时,地图会重新居中到初始位置,而不是返回到标记坐标。我找不到关于这个问题的任何信息,所以希望有人能告诉我如何在点击链接后让地图停留在标记坐标上?
-
在你的标记上绑定一个点击事件监听器。https://developers.google.com/maps/documentation/javascript/reference?csw=1标记
-
在单击标记时,触发对PHP页面的AJAX调用,其中包含已单击的标记纬度和经度以及地图缩放级别。https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started
-
在PHP页面上,将这3个参数存储在一个SESSION变量中。https://php.net/manual/en/session.examples.basic.php
-
在加载地图的脚本中,触发对PHP页面的AJAX调用,该调用将返回SESSION变量(如果存在)。https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started Step_2_.E2.80.93_Handling_the_server_response
-
如果页面响应存储的变量,则将它们应用于具有
setCenter()
和setZoom()
的地图,如果没有,则以默认的中心和缩放级别显示地图。https://developers.google.com/maps/documentation/javascript/reference?csw=1地图
如果您想要一种更简单的方法来管理AJAX调用,您可以看看jQuery: http://api.jquery.com/jquery.ajax/
如果链接将您带到站点内的另一个页面,您可以使用全局php变量来保存该位置,如果您要前往不同的站点,那么您将希望将该数据存储在用户机器上使用cookie。你需要修改你的onload函数来检查cookie数据,如果没有,那么将其设置为初始延迟。
下面是关于设置和检索cookie数据的教程http://www.tutorialspoint.com/javascript/javascript_cookies.htm
此处更新而不是注释:
在做了一些测试后,我的建议将不完全工作。有三个问题。
-
POST,而全局变量在后退时丢失,因此您必须使用SESSION和POST。所以你的第二页的顶部应该有这样的东西。
if( isset($_POST["name"]) || isset($_POST["age"]) ){ $_SESSION['name'] = $_POST['name']; $_SESSION['age'] = $_POST['age']; }
您的第一页将需要类似的东西,但检查$_SESSION
是否设置,然后将值传输到javascript。<?php if( isset($_SESSION["name"]){ ?> <script type="text/javascript"> var name = <?php echo $_SESSION["name"] ?> </script> <?php } ?>
不要忘记使用session_start(); -
你的第二个问题是浏览器喜欢缓存数据时,他们可以,你的SESSION变量不会被使用,当你点击后退按钮,除非你强制刷新JavaScript
location.reload(true);
-
你必须用一些东西来包装
location.reload(true);
,所以它只发生在后退按钮被按下时。这可能是你最好的选择跟踪当用户点击浏览器上的返回按钮