离开页面后返回到谷歌地图V3上的标记


Return to marker on google maps V3 after leaving page

我使用php和MySQL向Google V3地图添加标记,遵循Google Developers的说明。这些标记分布在一个很大的地理区域,并且在点击时具有指向其他站点页面的链接,但是当使用后退按钮时,地图会重新居中到初始位置,而不是返回到标记坐标。我找不到关于这个问题的任何信息,所以希望有人能告诉我如何在点击链接后让地图停留在标记坐标上?

  1. 在你的标记上绑定一个点击事件监听器。https://developers.google.com/maps/documentation/javascript/reference?csw=1标记

  2. 在单击标记时,触发对PHP页面的AJAX调用,其中包含已单击的标记纬度和经度以及地图缩放级别。https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started

  3. 在PHP页面上,将这3个参数存储在一个SESSION变量中。https://php.net/manual/en/session.examples.basic.php

  4. 在加载地图的脚本中,触发对PHP页面的AJAX调用,该调用将返回SESSION变量(如果存在)。https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started Step_2_.E2.80.93_Handling_the_server_response

  5. 如果页面响应存储的变量,则将它们应用于具有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

此处更新而不是注释:
在做了一些测试后,我的建议将不完全工作。有三个问题。

  1. 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();

  2. 你的第二个问题是浏览器喜欢缓存数据时,他们可以,你的SESSION变量不会被使用,当你点击后退按钮,除非你强制刷新JavaScript location.reload(true);

  3. 你必须用一些东西来包装location.reload(true);,所以它只发生在后退按钮被按下时。这可能是你最好的选择跟踪当用户点击浏览器上的返回按钮