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

时间:2014-05-27 14:55:17

标签: javascript php mysql google-maps google-maps-api-3

我按照Google开发者的说明,使用php和MySQL将标记添加到Google V3地图中。标记分布在一个大的地理区域,并在单击时链接到其他网站页面,但是当使用后退按钮时,地图已重新居中到初始latlng而不是返回到标记坐标。 我找不到关于这个问题的任何信息,所以希望有人在这里告诉我如何在点击链接后让地图留在标记坐标上?

2 个答案:

答案 0 :(得分:1)

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

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

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

  4. 在加载地图的脚本中,触发 AJAX 调用PHP页面,该页面将发送回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#Map

  6. 如果您想要一种更简单的方法来管理AJAX调用,可以查看jQuery:http://api.jquery.com/jquery.ajax/

答案 1 :(得分:-1)

如果链接将您带到站点中的另一个页面,您可以使用全局php变量来保存该位置,如果您要访问其他站点,那么您将要将该数据存储在该站点上用户机器用cookie。您将要修改您的onload函数以检查Cookie数据,如果没有,则将其设置为初始latlng。

这是一个关于设置和检索Cookie http://www.tutorialspoint.com/javascript/javascript_cookies.htm

中的数据的教程

在此处更新而不是评论:
做了一些测试后,我建议不会完全正常工作。有三个问题。

  1. POST,当向后移动时全局var丢失,因此您必须使用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_destroy()。{/ p>

  2. 您的第二个问题是浏览器会尽可能地缓存数据,并且当您点击后退按钮时不会使用您的SESSION变量,除非您强制刷新JavaScript location.reload(true);

  3. 你必须用location.reload(true);包裹,所以只有在按下后退按钮时才会发生..这可能是你最好的选择Track when user hits back button on the browser