【问题标题】:Google Maps update marker from changing mysql coordinate谷歌地图从改变mysql坐标更新标记
【发布时间】:2013-05-22 11:21:47
【问题描述】:

我一直在寻求帮助,但我发现的一切都没有帮助我。

我正在尝试找到一种解决方案,让我可以在 Google 地图上“实时”绘制移动物体的 GPS 坐标。

每个对象的 GPS 坐标将不断更新到 MySQL 数据库中,我想知道是否可以读取每个更新的坐标,可能每隔几秒钟读取一次,然后重新绘制标记坐标谷歌地图,无需用户刷新页面。这可以做到吗,还是使用谷歌地图的API太复杂了

提前致谢。

编辑 > 我当前的代码。

<?php
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM `gps`";
$result=mysql_query($sql);
while($row = mysql_fetch_array($result))
  {
  $_SESSION['x']=$row['x'];
  $_SESSION['y']=$row['y'];
  $_SESSION['driver']=$row['driver'];
  $_SESSION['callsign']=$row['username'];
  }?>
  <head>
  <style type="text/css">
      html { height: 100% }
      body { height: 100%; margin: 0; padding: 0 }
      #map-canvas { height: 100% }
    </style>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Live Viewer</title>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
    <script>
function initialize() {
  var myLatlng = new google.maps.LatLng(<?php echo $_SESSION['x'].",".$_SESSION['y']; ?>);
  var mapOptions = {
    zoom: 11,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

  var marker = new google.maps.Marker({
      position: myLatlng,
      map: map,
      title: '<?php echo $_SESSION{'']; ?>'
  });
}

function movemarker( map, marker ) {

    marker.setPosition( myLatlng );
    map.panTo( myLatlng );

};

google.maps.event.addDomListener(window, 'load', initialize);

    </script>
  </head>
  <body>
    <div id="map-canvas"></div>
  </body>

【问题讨论】:

    标签: php javascript mysql maps


    【解决方案1】:

    这与 Google Maps API 本身无关。您需要做的是在您的站点上创建一个“类似 API”的端点,该端点返回更新后的坐标,例如作为 JSON 字符串,然后在客户端使用 setTimeout 来经常检索此端点的 URL阿贾克斯/XHR。然后,您可以对其进行解析并将其应用于 Google 地图实例。

    如何实际开发它完全取决于您的前端和后端选择,您使用的 JS 库等等。

    【讨论】:

    【解决方案2】:

    只需使用匿名函数设置setInterval(),该函数调用检索坐标的 Ajax 请求。

    那么只需更新正确的标记即可。

    类似的东西

    setInterval(function(){
        jQuery.getJSON('/getmarker.php?id=1234', function(data){
            updateMarker(marker, data.lat, data.lng);
        });
    }, 5000);
    

    当然,你不必为 ajax 的东西使用 jQuery,但它确实让它更容易......

    【讨论】:

      猜你喜欢
      • 2018-05-04
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 2019-10-11
      • 2020-03-14
      相关资源
      最近更新 更多