2

因此,在了解如何从我的数据库中检索 x 和 y 坐标并将它们显示在 Google 地图中之后:我开始工作了。所以要与我的 mySQL 数据库建立连接是这样写的:

<?php
  $server     = '132.3.2.1.';
  $username   = 'you';
  $password   = 'notyou';
  $database   = 'youapp';
  $dsn        = "mysql:host=$server;dbname=$database";

  (This is all made up)

为了从我的数据库中检索坐标并将它们放入 JSON 字符串中,我写了这个:

<?php
  include 'config.php';
  try {
    $db = new PDO($dsn, $username, $password);
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $sth = $db->query("SELECT * FROM youapp");
    $youapp = $sth->fetchAll();
    echo json_encode( $youapp );
  } catch (Exception $e) {
    echo $e->getMessage();
  }

我很确定到目前为止我编写的代码是正确的。但我不确定谷歌地图部分。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta name="viewport" content="width=device-width; height=device-height; user-scalable=no" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Beer Me</title>
    <link rel="stylesheet" href="/master.css" type="text/css" media="screen" />
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
    var map;
    function init() {
      var mapOptions = {
        zoom: 13,
        center: center,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      }
      map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
      makeRequest('get_locations.php', function(data) {
        var data = JSON.parse(data.responseText);
        for (var i = 0; i < data.length; i++) {
          displayLocation(data[i]);
        }
      });
    }
    function makeRequest(url, callback) {
      var request;
      if (window.XMLHttpRequest) {
        request = new XMLHttpRequest();
      // IE7+, Firefox, Chrome, Opera, Safari
      } else {
        request = new ActiveXObject("Microsoft.XMLHTTP");
      // IE6, IE5
      }
      request.onreadystatechange = function() {
        if (request.readyState == 4 && request.status == 200) {
          callback(request);
        }
      }
      request.open("GET", url, true);
      request.send();
    }
  </script>
</head>
<body onload="init();">
  <div id="map_canvas" style="width:400px; height: 400px;"></div>
</body>
</html>

所以该函数makerequest是一个标准的 Ajax 调用。但我不确定如何在 Google 地图中显示结果。如果有人可以查看我的代码以与我的数据库建立连接,并就如何在 Google 地图中显示结果提供一些建议或其他内容makerequest,我们将不胜感激。

4

2 回答 2

2

一切看起来都不错,只是您缺少该功能displayLocation。只需在其中添加:

function displayLocation(item) {
    var marker = new google.maps.Marker({
        // might need to change item.lat/item.lng
        //  to match the column name in your DB
        position: new google.maps.LatLng(item.lat, item.lng),
        map: map
    });
}
于 2012-09-06T01:03:39.550 回答
0

尝试这个。

function displayLocation(item) {
    var marker = new google.maps.Marker({
        // might need to change item.lat/item.lng
        //  to match the column name in your DB
        position: new google.maps.LatLng(item.lat, item.lng),
        map: map
    });
}
于 2017-12-06T09:47:05.880 回答