从json php加载标记到谷歌地图

时间:2012-03-28 13:36:00

标签: javascript json google-maps

我正在尝试为我的网页加载一些标记到谷歌地图。

我在数据库中有所有标记,我通过php脚本获取它们。此脚本将数据库中的所有数据打印为json。像这样:

<?php
   require_once("phpsqlajax_dbinfo.php"); //info for DB connection


   // Opens a connection to a MySQL server
   $connection=mysql_connect ('localhost', $username, $password);
   if (!$connection) {
     die('Not connected : ' . mysql_error());
   }

   // Set the active MySQL database
   $db_selected = mysql_select_db($database, $connection);
   if (!$db_selected) {
    die ('Can\'t use db : ' . mysql_error());
   }

  // Select all the rows in the markers table
  $query = "SELECT coordY, coordX FROM contenedor WHERE peso = 12";
  $result = mysql_query($query);
  if (!$result) {
    die('Invalid query: ' . mysql_error());
  }



  $x = 0;
  while ($row = @mysql_fetch_assoc($result)){
    $data[$x] = array("lat" => $row['coordY'], "lng" => $row['coordX']);
    $x++;
 }
 echo json_encode($data);
 ?>

我的json文件应如下所示: [{ “LAT”: “A”, “LNG”: “B”},{ “LAT”: “C”, “LNG”: “d”},{ “LAT”: “E”, “LNG”: “F”}] //字符是lat和long ...

之后,在其他文件(我的index.html)中,我创建了地图,如:

 var map = new GMap2(document.getElementById("map_canvas"));
    map.setCenter(new GLatLng(X, Y), 13); //X and Y are my lat and long
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
 ...

我想创建一个名为addMarket的函数来加载我的所有标记。但我无法从javascript获取该文件的信息。我喜欢这样的事情:

for (var i = 0;i < file.length; i += 1) {
    var lat = file[i].lat;
    var lon = file[i].lng;
    addMarker(lat,lon);
};

function addMarker(lat,lng){
var latlng = new google.maps.LatLng(lat,lng);  
var marker = new google.maps.Marker({position: latlng, map: map});

但我不知道如何读取值或将所有值都放在数组中。

有什么想法吗?

我的其他问题是:我在观看地图时是否可以上传标记?例如,如果我的一个标记在观看期间发生变化,我想获得新值(例如,改变颜色..)我在初始化函数中有addMarker函数,我应该把它放到外面吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

您必须为json指定一个名称,以便JS可以访问它,例如:

echo 'file='.json_encode($data),';';